批量删除mybatis多参数效率的实例分析
批量删除mybatis多参数效率的实例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
专注于为中小企业提供成都网站建设、网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业扬中免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千余家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
最近遇到批量删除表数据的问题并且是根据多个参数,我这个情况是有一个参数比较特殊是一样的值,但是我还是把它作为通用情况。做了实验测试。
代码测试如下:
Map param =new HashMap(); param.put("userId",userId); ListlistJobIds = 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://hbruida.cn/article/jiidhh.html