数据库批处理
1)要用到的方法
方法 |
说明 |
void addBatch() |
将给定的 SQL 命令添加到此 Statement 对象的当前命令列表中。通过调用方法 executeBatch 可以批量执行此列表中的命令。 |
int[] executeBatch() |
每次提交一批命令到数据库中执行,如果所有的命令都成功执行了, 那么返回一个数组,这个数组是说明每条命令所影响的行数 |
注意:mysql 批处理是默认关闭的,所以需要加一个参数才打开mysql 数据库批处理,在url中添加。
rewriteBatchedStatements=true
例如: url=jdbc:mysql://127.0.0.1:3306/db5?characterEncoding=UTF-8&rewriteBatchedStatements=true
JAVA实现数据库批处理代码示例:
package com.lagou.testbatch;
import com.lagou.utils.DruidUtils;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class BatchInsert {
//使用批处理 向表中添加 10000条数据
public static void main(String[] args) throws SQLException {
//1.获取连接
Connection connection = DruidUtils.getConnection();
//2.获取预处理对象
PreparedStatement ps = connection.prepareStatement("insert into testBatch(uname) values(?)");
//3.执行批量插入操作
for (int i = 0; i < 10000 ; i++){
ps.setString(1,"小强" + i);
//将SQL添加到批处理列表
ps.addBatch();
}
//添加时间戳 测试执行效率
long start = System.currentTimeMillis();
//4.统一执行 批量插入操作
ps.executeBatch();
long end = System.currentTimeMillis();
System.out.println("插入10000条数据需要使用: " + (end - start) + " 毫秒!");
//5.关闭连接
DruidUtils.close(connection,ps);
}
}
节选自拉钩教育JAVA系列教程