在谈jdbc批处理之前,首先先认识下PreparedStatement
1.PreparedStatement:sql预处理对象
Java提供了 Statement、PreparedStatement 和 CallableStatement三种方式来执行查询语句,其中 Statement 用于通用查询, PreparedStatement 用于执行参数化查询,而 CallableStatement则是用于存储过程。当我们写jdbc时更多的是用到PreparedStatement ,因为该对象具有以下几点优势:
1).PreparedStatement可以写动态参数化的查询
2).PreparedStatement比 Statement 更快
3).PreparedStatement可以防止SQL注入式攻击
简单讲,以上几点优势都是基于预编译sql语句:一次编译,多次运行.
2.PreparedStatement.addBatch()
当执行该方法时,jdbc会统一把所有执行的sql语句放入缓冲区,当执行PreparedStatement.executeBatch()时,开始批量执行这些预编译sql语句.
之前做项目时,需要批量更新1000多条数据,如果使用for循环,需要30多秒的时间,但是使用jdbc的批处理只需要3秒!简单粗暴!但是jdbc的每次批处理都有数据的数量限制,查阅网上一些资料说的是54464条,这个我没有测试.不过一般的需求都是可以满足的,小伙伴们,还在等什么,快去使用啊!(#^.^#).
另附本人的jdbc batch代码地址:https://github.com/Everything1sPossible/jdbc-/blob/master/jdbcBatch