直接给成结论,验证请自行尝试
MySQL的JDBC连接的url中要加rewriteBatchedStatements参数,并保证5.1.13以上版本的驱动,才能实现高性能的批量插入。
MySQL JDBC驱动在默认情况下会无视executeBatch()语句,把我们期望批量执行的一组sql语句拆散,一条一条地发给MySQL数据库,批量插入实际上是单条插入,直接造成较低的性能。
只有把rewriteBatchedStatements参数置为true, 驱动才会帮你批量执行SQL,另外这个选项对INSERT/UPDATE/DELETE都有效
正常批量插入是循环执行sqlsession.insert(),设置批量重写为true相当于把所有插入优化成一条批量插入insert values(1,2,3,…) 语句
开启后可能导致缓存命中失效或者因为一条语句失败导致所有语句执行失败。