使用JDBC进行批处理
适用场景:
当需要向数据库发送一批SQL语句执行时,应避免向数据库一条条的发送执行,而应该采用JDBC的批处理机制,以提升执行效率。
实现方式:
方式一:Statement.addBatch(SQL),可以发送不同的SQL语句
执行SQL语句的方法:executeBatch()
清除批处理命令的方法:clearBatch()
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try{
conn = JdbcUtils.getConnection();
String sql1 = "insert into testbatch(id,name) values('1','aaa')";
String sql2 = "update testbatch set name='bbb' where id='1'";
st = conn.createStatement(); //list
st.addBatch(sql1);
st.addBatch(sql2);
//[3,4]
st.executeBatch();
st.clearBatch();
}finally{
JdbcUtils.release(conn, st, rs);
}
方式二:PreParedStatement.addBatch(),只能发送相同的SQL语句适合做批量插入、批量更新。
执行SQL语句的方法:executeBatch()
清除批处理命令的方法:clearBatch()
Connection conn = null;
PreparedStatement st = null;
ResultSet rs = null;
try{
conn = JdbcUtils.getConnection();
String sql = "insert into testbatch(id,name) values(?,?)"; //作批量插入 批量更新
st = conn.prepareStatement(sql);
for(int i=1;i<=10000006;i++){
st.setString(1, i+"");
st.setString(2, "aa" + i);
st.addBatch();
if(i%1000==0){
st.executeBatch();
st.clearBatch();
}
}
st.executeBatch();
}finally{
JdbcUtils.release(conn, st, rs);
}
还没有评论,来说两句吧...