JDBC_批量处理SQL语句
使用批处理有两个前提:
1. 首先要MySQL驱动支持批处理(我用的5.17)
2. 配置连接服务器的地址时,在后面加:?rewriteBatchedStatements=true
如:
- 相关API:
- addBatch:将SQL语句添加到批处理包
- executeBatch:执行批处理包中的SQL语句
- clearBatch:清空批处理包中的SQL语句
说明:批处理往往搭配preparedStatement使用:preparedStatement减少编译次数,批处理减少运行次数,效率大大提高
案例:通过批处理向表中插入十万条数据(只要一秒的样子,正常方法要一分钟左右)
/**
* @author YH
* @create 2020-03-04 17:33
*/
public class TestBatch {
//注:JDBCUtils为工具类
@Test
public void TestBatch(){
//获取连接
Connection connection = JDBCUtils.getConnection();
//执行插入
PreparedStatement statement = null;
try {
statement = connection.prepareStatement("insert into admin values(null,?,?)");
for(int i = 1;i <= 100000;i++){ //注意:此处记录条件的值要从1开始,确保被下面的if条件取,避免数据存进了批处理包而未被执行
statement.setString(1,"name"+i);
statement.setString(2,""+i);
//将SQL语句添加到添加到批处理包中
statement.addBatch();
// 每添加1000次执行并清空一次
if(i % 1000 == 0){
statement.executeBatch(); //执行批处理数据
statement.clearBatch(); //清空批处理包
}
}
System.out.println("操作完毕");
} catch (SQLException e) {
throw new RuntimeException(e);
} finally {
//关闭资源
JDBCUtils.close(connection,statement,null);
}
}
}
作者: "无问西东"
出处:https://www.cnblogs.com/csyh/p/12411877.html
版权:本文采用「署名-非商业性使用-相同方式共享 4.0 国际」知识共享许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!