JDBC Batch 是一种在 JDBC 中执行批量操作的机制,可以显著提高数据库操作的性能。通过将多个 SQL 语句组合成一个批处理任务一次性发送到数据库执行,减少了网络通信开销和数据库操作的调用次数。
以下是使用 JDBC Batch 执行插入操作的示例代码:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class JDBCBatchExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String username = "root";
String password = "password";
try (Connection conn = DriverManager.getConnection(url, username, password)) {
conn.setAutoCommit(false); // 关闭自动提交事务
String sql = "INSERT INTO employees (name, age) VALUES (?, ?)";
PreparedStatement statement = conn.prepareStatement(sql);
// 设置参数并添加到批处理中
statement.setString(1, "John");
statement.setInt(2, 30);
statement.addBatch();
statement.setString(1, "Jane");
statement.setInt(2, 28);
statement.addBatch();
statement.setString(1, "Mike");
statement.setInt(2, 35);
statement.addBatch();
int[] result = statement.executeBatch(); // 执行批处理
conn.commit(); // 提交事务
System.out.println("Inserted rows: " + result.length);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
在上面的示例中,我们首先创建了一个PreparedStatement
对象,并设置了INSERT
语句的参数。然后,我们使用addBatch()
方法将多个插入操作添加到批处理中。最后,通过调用executeBatch()
方法执行批处理任务,并返回一个整数数组表示每个操作的执行结果。
需要注意的是,在执行 JDBC Batch 时,通常会关闭自动提交事务(conn.setAutoCommit(false)),并在所有操作完成后手动提交事务(conn.commit())。这样可以确保所有操作要么全部成功提交,要么全部回滚。