SpringBoot+MyBatis批量插入数据的方法

分类:计算机 | 数据库 | Mybatis | 综合 1338
更新:2021-03-24 13:51:56
编辑

在使用MyBatis往数据库中插入大量的数据时如果一条记录一条记录地添加效率是十分低的,需要进行批量的插入,下面给大家介绍一种能够批量插入数据的方法。

Mapper接口

int insertBatch(@Param("userList") List<User> userList);

Mapper xml映射文件

  <!--批量插入数据-->
  <insert id="insertBatch" parameterType="com.test.pojo.User">
    INSERT INTO tb_user
    (
    ID, NAME, AGE,WEIGHT
    )
    VALUES
    <foreach collection="userList" item="model" separator=",">
      (
      #{model.id}, #{model.name}, #{model.age}, #{model.weight}
      )
    </foreach>
  </insert>

说明

  1. Mapper接口中的@Param("userList")对应xml文件中的collection="userList",@Param不能少,否则在xml中匹配不到collection="userList"。
  2. Mapper接口中的User对应xml文件中的parameterType="com.test.pojo.User"。
  3. insertBatch方法的返回值是批量插入的记录数量。

性能比较

例如List集合中有5万多条数据,如果在Java代码中遍历这个列表一条一条地往mysql数据库中插入,花了一个多小时还没结束,而使用了上面的批量插入的方法后不到1分钟就搞定了,性能差别十分大。

参考资料

https://blog.csdn.net/w605283073/article/details/83064000

https://www.jianshu.com/p/a18192e2de32