是的,Java 的 JDBC 是支持批处理(Batch Processing)的。
JDBC 批处理是指:将多条 SQL 语句一次性发送到数据库执行,而不是一条一条发送,从而减少网络交互次数,提高性能。
适用于多条不同 SQL 语句
Statement stmt = conn.createStatement();
stmt.addBatch("INSERT INTO user VALUES (1, 'Tom')");
stmt.addBatch("INSERT INTO user VALUES (2, 'Jerry')");
stmt.addBatch("UPDATE user SET name='Tom2' WHERE id=1");
int[] results = stmt.executeBatch();
conn.commit();
适用于同一条 SQL,不同参数
String sql = "INSERT INTO user(id, name) VALUES (?, ?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, 1);
ps.setString(2, "Tom");
ps.addBatch();
ps.setInt(1, 2);
ps.setString(2, "Jerry");
ps.addBatch();
ps.executeBatch();
conn.commit();
conn.setAutoCommit(false);
// 批处理
conn.commit();
rewriteBatchedStatements=truejdbc:mysql://localhost:3306/test?rewriteBatchedStatements=true
try {
ps.executeBatch();
} catch (BatchUpdateException e) {
int[] updateCounts = e.getUpdateCounts();
}
✅ 大量 INSERT / UPDATE
✅ 数据导入、同步
✅ ETL、日志写入
❌ 少量 SQL(反而更复杂)
addBatch() + executeBatch()PreparedStatement 是首选如果你愿意,我也可以帮你写一个完整可运行的 JDBC 批处理示例或对比MyBatis 批处理。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。