前言
PreparedStatement支持批量插入,在一次编译的基础上还可以减少IO和写入数据库来提高批量插入的效率。
一、批量插入
1、批量执行SQL语句
当需要成批插入或者更新记录时,可以采用Java的批量更新机制,这一机制允许多条语句一次性提交给数据库批量处理。通常情况下比单独提交处理更有效率
JDBC的批量处理语句包括下面三个方法:
- addBatch(String):添加需要批量处理的SQL语句或是参数;
- executeBatch():执行批量处理语句;
- clearBatch():清空缓存的数据
通常我们会遇到两种批量执行SQL语句的情况:
- 多条SQL语句的批量处理;
- 一个SQL语句的批量传参;
2、批量插入源码
/**
* @function 高效批量插入
* 大批量插入,如何提高效率?
* 1.减少IO次数,通过Batch来减少IO,
* mysql服务器默认是关闭批处理的,我们需要通过一个参数,让mysql开启批处理的支持。
* ?rewriteBatchedStatements=true 写在配置文件的url后面(5.1.37版本以上才支持)
* 2.减少写入数据库次数,conn.setAutoCommit(false);
*/
@Test
public void multiInsert() {
String sql = "insert into goods(name) values(?)";