批量删除mybatis多参数效率的实例分析

批量删除mybatis多参数效率的实例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

专注于为中小企业提供成都网站建设、网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业扬中免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千余家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

最近遇到批量删除表数据的问题并且是根据多个参数,我这个情况是有一个参数比较特殊是一样的值,但是我还是把它作为通用情况。做了实验测试。

代码测试如下:

Map param =new HashMap();
param.put("userId",userId);
List listJobIds = sysUserJobdel.stream().map(SysUserJob::getJobId).distinct().collect(Collectors.toList());
param.put("jobIds",listJobIds);for (int i = 0; i < 10000; i++) {
    SysUserJob userJob =new SysUserJob();
    userJob.setJobId(String.valueOf(SystemUtils.nextId()));
    userJob.setUserId(userId);
    sysUserJobdel.add(userJob);
    listJobIds.add(String.valueOf(SystemUtils.nextId()));
}
param.put("jobIds",listJobIds);long begintime1 = System.currentTimeMillis();sysUserMapper.deleteUserJobs(param);long endtime1 = System.currentTimeMillis();long costTime1 = ( endtime1 - begintime1 );
System.err.println( "costTime1===="+ costTime1);long begintime2 = System.currentTimeMillis();sysUserMapper.deleteUserJob(sysUserJobdel);long endtime2 = System.currentTimeMillis();long costTime2 = ( endtime2 - begintime2 );
System.err.println( "costTime2===="+ costTime2);long begintime3 = System.currentTimeMillis();sysUserMapper.deletesUsersJobs(sysUserJobdel);long endtime3 = System.currentTimeMillis();long costTime3 = ( endtime3 - begintime3 );
System.err.println( "costTime3===="+ costTime3);
delete from sys_user_job where user_id = #{userId} and
    job_id in#{item}delete from sys_user_job where(user_id = #{item.userId} and job_id= #{item.jobId})delete from sys_user_job where (user_id,job_id) in(#{item.userId},#{item.jobId})

三次结果输出:

 
costTime1====173
costTime2====1673
costTime3====414


costTime1====115
costTime2====1523
costTime3====391


costTime1====105
costTime2====1501
costTime3====417

看完上述内容,你们掌握批量删除mybatis多参数效率的实例分析的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!


本文题目:批量删除mybatis多参数效率的实例分析
标题来源:http://azwzsj.com/article/jiidhh.html