个人随笔
目录
springboot+mybatis批量插入数据,还得是要用foreach啊
2024-04-17 17:34:34

如果你有做什么一键生成数据或者批量导入数据的功能,切忌不要一条条来插入,否则会极其影响效率。

案例

1、业务逻辑

这边要一键生成一批数据,可能会几条、几十条、几百条或者上千几万条。

2、伪代码

这边打算用mybatis的foreach来批量插入,java伪代码如下

  1. List<Data> list = 从数据库或者文件里面获得
  2. List<Data> nowData = new ArrayList<>();
  3. //1、循环处理
  4. for(Data data:list){
  5. //2、加入当前处理集合
  6. nowData.add(data);
  7. if(nowData.size()>=500){
  8. //3、如果大于等于500条,则批量处理
  9. dealDatas(nowData);
  10. //4、处理完后清空当前数据
  11. nowData.clear();
  12. }
  13. }
  14. //如果当前数据还有剩余,也就是不够500条,继续处理完
  15. if(nowData.size()>0){
  16. dealDatas(nowData);
  17. nowData.clear();
  18. }

处理对应mybatis xml如下

  1. <insert id="insertDatas">
  2. insert into t_data (id,name)
  3. values
  4. <foreach collection="data" item="item" index="index" separator=",">
  5. (#{item.id},#{item.name})
  6. </foreach>
  7. </insert>

3、注意事项

上面是500条处理一批,是因为我的处理逻辑里面还需要将500条先in查询一下是否存在,而in如果太多会报错,比如1000条以上,这里当然也可以改为800这些,看个人需要,通过测试发现500已经满足我当下的业务需求了。

3、单条和批量测试对比结果

 8

啊!这个可能是世界上最丑的留言输入框功能~


当然,也是最丑的留言列表

有疑问发邮件到 : suibibk@qq.com 侵权立删
Copyright : 个人随笔   备案号 : 粤ICP备18099399号-2