我们如果使用PreparedStatement批量写入一些数据用于我们的MySQL各种测试呢我们来看了方法1
public void test11(){
Connection conn=null;
PreparedStatement pstm=null;
ResultSet rs=null;
try{
conn=JDBCUtils.getConnection();
String sql="insert into goods (name) values(?)";
pstm=conn.prepareStatement(sql);
for(int i=35860;i<=25335860;i++){
pstm.setObject(1,"今日订单_*"+i+"_条目。***");
pstm.executeUpdate();
}
}catch (Exception e){
e.printStackTrace();
}finally {
//这里写关闭操作。
}
}
此方法虽然简单,但是对于性能方便不是特别好,我们做IO的时候大家应该知道有个缓存的概念吧。
同样我也可以通过用缓存的方式不要每循环一次就写入一条,我们可以缓存N条记录以后,一次性写入。
public void test12(){
Connection conn=null;
PreparedStatement pstm=null;
ResultSet rs=null;
try{
conn=JDBCUtils.getConnection();
//设置不允许自动提交数据
conn.setAutoCommit(false);
String sql="insert into goods (name) values(?)";
pstm=conn.prepareStatement(sql);
for(int i = 1;i <= 200;i++){
pstm.setObject(1, "江河胡海" +i);
//1."攒"sql
pstm.addBatch();
if(i % 50 == 0){
//2.执行batch
pstm.executeBatch();
//3.清空batch
pstm.clearBatch();
}
}
//提交数据
conn.commit();
}catch (Exception e){
e.printStackTrace();
}finally {
JDBCUtils.closeResource(conn,pstm,rs);
}
}
这样一来,写入数据的效率提升可不是一点半点。大家可以尝试测试一下。