批处理(batch)操作数据库
- 批处理指的是一次操作中执行多条SQL语句,批处理相比于一次一次执行效率会提高很多。
- 当向数据库中添加大量的数据时,需要用到批处理。
批处理实现
MySQL中批处理默认是关闭的,需要在url后面增加参数:rewriteBatchedStatements=true
String url = "url=jdbc:mysql:///db5?characterEncoding=UTF-8&rewriteBatchedStatements=true";
首先,建立一个test表用于存数据
CREATE TABLE testbatch(
id INT PRIMARY KEY AUTO_INCREMENT,
uname VARCHAR(20)
);
建立批处理SQL测试,最重要的是两个步骤:
- addBatch():向Batch中加入SQL语句
- executeBatch():执行Batch中的SQL语句
public class TestBatch {
// 使用批处理,像表中添加1w条数据
public static void main(String[] args) throws Exception {
// 链接
Connection conn = DruidUtils.getConnection();
// 预处理对象
PreparedStatement pstmt = conn.prepareStatement("insert into testbatch(uname) values(?)");
// 批插入操作
for (int i = 0; i < 10000;i++ ) {
pstmt.setString(1,"i=" + i);
// 将sql添加到批处理列表
pstmt.addBatch();
}
// 执行批处理(测试执行效率)
long start = System.currentTimeMillis();
pstmt.executeBatch();
long end = System.currentTimeMillis();
System.out.println("插入所用时间:" + (end-start) + "毫秒");
// 关闭连接
DruidUtils.close(conn,pstmt);
}
}