批量编辑更新updateBatchById 和in那个更快

无敌的宇宙
无敌的宇宙
擅长邻域:Java,HTML,JavaScript,MySQL,支付,退款,图片上传

分类: Java springboot 专栏: java springboot 标签: updateBatchById和in那个更快

2023-12-02 12:58:15 102浏览

需要批量更新上架状态. 思路1:使用updateBatchById(执行时间848ms) 思路2:使用in修改(执行时间73ms) 先说结果:in更快相率更高

需要批量更新上架状态.

思路1:使用updateBatchById(执行时间848ms)

思路2:使用in修改(执行时间73ms)

先说结果:in更快相率更高 

查看执行sql: 

image.png

 

 

代码:

if(editli!=null&&editli.size()>0){
System.out.println("--------------------两种批量编辑的方法,那个快,区别--------------------");

long ts1=System.currentTimeMillis();

scqtService.updateBatchById(editli);
long ts2=System.currentTimeMillis();

scqtService.updateQtscStatusByIds(qtscStatus,idli);
long ts3=System.currentTimeMillis();

System.out.println(ts2-ts1);//结果848
System.out.println(ts3-ts2);//73
}
editli时这样赋值的

JfSchoolQtype ss=new JfSchoolQtype();
ss.setQtscStatus(qtscStatus);
ss.setId(id);
editli.add(ss);
//自己封装的in更新方法 
public void updateQtscStatusByIds(String qtscStatus,List<Integer> idli){
        if(idli==null||idli.size()==0) return ;

        LambdaQueryWrapper<JfSchoolQtype> lambdaQueryWrapper = Wrappers.lambdaQuery();
        lambdaQueryWrapper.in(JfSchoolQtype::getId,idli);

        JfSchoolQtype s=new JfSchoolQtype();
        s.setQtscStatus(qtscStatus);
        qtscMapper.update(s,lambdaQueryWrapper);
    }

个人拙见:如果更新的字段一致使用in

如果不一致使用updateBatch

测试数据多的也一样结果

好博客就要一起分享哦!分享海报

此处可发布评论

评论(0展开评论

暂无评论,快来写一下吧

展开评论

您可能感兴趣的博客

客服QQ 1913284695