一切福田,不離方寸,從心而覓,感無不通。

MyBatis批量插入的五种方式归纳总结

前言:这里我列举了MyBatis和MyBatis-Plus常用的五种批量插入的方式,进行了详细的总结归纳,写的非常详细,整体思路清晰明了,只分享干货。

目录

一、准备工作

二、MyBatis利用For循环批量插入

三、MyBatis的手动批量提交

四、MyBatis以集合方式批量新增

五、MyBatis-Plus提供的SaveBatch方法

六、MyBatis-Plus提供的InsertBatchSomeColumn方法

七、总结


一、准备工作

1、导入pom.xml依赖

 

2、配置yml文件

 

3、公用的User类

 

二、MyBatis利用For循环批量插入

1、编写UserService服务类,测试一万条数据耗时情况

 

2、编写UserMapper接口

 

3、编写UserMapper.xml文件

 

4、进行单元测试

 

5、结果输出

一万条数据总耗时:26348ms

三、MyBatis的手动批量提交

1、其他保持不变,Service层作稍微的变化

 

2、结果输出

一万条数据总耗时:24516ms

四、MyBatis以集合方式批量新增

1、编写UserService服务类

 

3、编写UserMapper接口

 

4、编写UserMapper.xml文件

 

5、输出结果

一万条数据总耗时:521ms

五、MyBatis-Plus提供的SaveBatch方法

1、编写UserService服务

 

2、编写UserMapper接口

 

3、单元测试结果

一万条数据总耗时:24674ms

注:

这边我没有开启rewriteBatchedStatements=true,所以会非常慢,开启的话我实测过,耗时为707ms,这个参数的作用是启用批处理语句的重写功能,这对提高使用JDBC批量更新语句的性能有很大帮助。

MyBatis-Plus的SaveBatch方法默认使用JDBC的addBatch()和executeBatch()方法实现批量插入。但是部分数据库的JDBC驱动并不支持addBatch(),这样每次插入都会发送一条SQL语句,严重影响了批量插入的性能。设置rewriteBatchedStatements=true后,MyBatis-Plus会重写插入语句,将其合并为一条SQL语句,从而减少网络交互次数,提高批量插入的效率。

需要加在yml配置文件中:

 

六、MyBatis-Plus提供的InsertBatchSomeColumn方法

1、编写EasySqlInjector 自定义类

 

2、定义核心配置类注入此Bean

 

3、编写UserService服务类

 

4、编写EasyBaseMapper接口

 

5、编写UserMapper接口

 

6、单元测试结果

一万条数据总耗时:575ms

七、总结

以上就是我对目前MyBatis常用的批量插入方法的总结

 

from:https://blog.csdn.net/HJW_233/article/details/126909439