温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java JDBC支持批处理吗

发布时间:2026-10-22 20:44:59 来源:亿速云 阅读:91 作者:小樊 栏目:编程语言

是的,Java 的 JDBC 是支持批处理(Batch Processing)的。

一、什么是 JDBC 批处理

JDBC 批处理是指:将多条 SQL 语句一次性发送到数据库执行,而不是一条一条发送,从而减少网络交互次数,提高性能。


二、JDBC 批处理的两种主要方式

1️⃣ Statement 批处理

适用于多条不同 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();

2️⃣ PreparedStatement 批处理(最常用 ✅)

适用于同一条 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();

三、使用批处理的注意事项

  1. 必须手动提交事务
conn.setAutoCommit(false);
// 批处理
conn.commit();
  1. 不是所有数据库都完全支持
  • MySQL:需要 rewriteBatchedStatements=true
jdbc:mysql://localhost:3306/test?rewriteBatchedStatements=true
  1. 批处理大小要合理
  • 通常 500~1000 条一批较好
  1. 异常处理
try {
    ps.executeBatch();
} catch (BatchUpdateException e) {
    int[] updateCounts = e.getUpdateCounts();
}

四、适用场景

✅ 大量 INSERT / UPDATE
✅ 数据导入、同步
✅ ETL、日志写入

❌ 少量 SQL(反而更复杂)


五、总结

  • ✅ JDBC 原生支持批处理
  • ✅ addBatch() + executeBatch()
  • ✅ PreparedStatement 是首选
  • ✅ 配合事务和参数调优效果最好

如果你愿意,我也可以帮你写一个完整可运行的 JDBC 批处理示例或对比MyBatis 批处理。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手