简介:
当向MySQL数据库中添加数据的时候一般都是一个一个地设置参数然后执行添加操作,这样在处理大量数据的时候会严重影响程序性能,所以就要使用批处理(一批一批地添加)
批处理的原理其实就是将设置的参数放进集合,然后再一起传入SQL中。
代码测试:
先创建一个表account:
package jdbcDemo;
import java.sql.Connection;
import java.sql.PreparedStatement;
import org.junit.jupiter.api.Test;
import JDBC.JdbcUtils;
public class Demo2 {
/**
* 进行批处理
* @throws Exception
*/
@Test
public void fun1() throws Exception {
/**
* pstmt:
* 添加参数到批中
* 执行批
*/
// 连接SQL对象
Connection conn = JdbcUtils.getConnection();
// SQL模板
String sql = "INSERT INTO account VALUES(?,?,?)";
// pstmt对象
PreparedStatement pstmt = conn.prepareStatement(sql);
// 大量地添加参数
for(int i = 1;i < 10000; i++ ) {
pstmt.setInt(1, i);
pstmt.setString(2, "emp_" + i);
pstmt.setDouble(3, (Math.log(i)+1.0));
// 添加批,这一组参数会保存到集合中
pstmt.addBatch();
}
long start = System.currentTimeMillis(); // 得到当前时间的毫秒值
pstmt.executeBatch(); // 执行批!
long end = System.currentTimeMillis(); // 得到当前时间的毫秒值
System.out.println("用时: " + ((end - start - (end - start)%100.0)/1000.0) + " s " + (end - start) + " ms");
}
}
此时数据库的url为:
url = jdbc:mysql://localhost:3306/db1
执行程序查看用时:
将数据库的url修改为批处理支持:
url = jdbc:mysql://localhost:3306/db1?rewriteBatchedStatements=true
先删除掉表中的原有数据,然后再次执行:
能够很明显地发现时间极大地减少了。
标签:
JDBC
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)