Skip to content

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())。这样可以确保所有操作要么全部成功提交,要么全部回滚。