获得Connection连接后,默认是自动提交的
要设置不手动提交,批量插入才有效果
preparedStatement.addBatch();积攒SQL
preparedStatement.executeBatch();批量执行
preparedStatement.clearBatch();清空积攒的SQL
public void testAddBatch() throws Exception{
String url = "jdbc:mysql://localhost:3306/jdbc_test?serverTimezone=GMT%2B8";
String user = "root";
String password = "root123";
Class.forName("com.mysql.jdbc.Driver");
// 1.获取连接
Connection conn = DriverManager.getConnection(url, user, password);
// 不自动提交
conn.setAutoCommit(false);
// 2.准备sql
String sql = "INSERT INTO student(sname, sage) VALUES(?, ?)";
// 3.获取PreparedStatement
PreparedStatement preparedStatement = conn.prepareStatement(sql);
long begin = System.currentTimeMillis();
for(int i = 0; i < 100 * 100; i++){
preparedStatement.setString(1, "zhang_"+i);
preparedStatement.setInt(2,20);
// 积攒SQL
preparedStatement.addBatch();
if((i+1)%100 == 0){
// 4.执行插入
preparedStatement.executeBatch();
preparedStatement.clearBatch();
}
}
// 提交
conn.commit();
long end = System.currentTimeMillis();
System.out.println("end-begin="+(end-begin));
// 5.关闭连接
preparedStatement.close();
conn.close();
}