mybatis批量操作(批量查询,批量插入,批量更新)


在开发过程中操作大数据量时,连续的循环单个sql操作会导致数据库连接数剧增,整体执行效率也会变的比较低,因此需要使用批量操作,减少连接数,效率更快。


批量查询的方法:

注:如果是简单的批量查询entity,mybatis-plus中有封装好的方法,可以直接使用
复杂一点的:
xxxDao.java

List<ArticleAccumulatedIncomeDTO> batchAccumulatedIncome(List<Long> ids);

xxxDao.xml

    <select id="batchAccumulatedIncome"  resultMap="ArticleSumIncome">select article_id,sum(income) as accumulated_incomefrom wallet<where>article_id in (<foreach collection="list"  item="id" index="index" separator=",">#{id}</foreach>)</where>group by article_id</select>

批量插入的方法:

xxxDao.java

int addResource(List<Resource> ResourceList);

xxxDao.xml

<insert id="addResource" parameterType="java.util.List">
insert into resource (object_id, res_id, res_detail_value, res_detail_name)
values
<foreach collection="list" item=" ResourceList " index="index" separator=",">(  #{ResourceList.objectId,jdbcType=VARCHAR},#{ResourceList.resId,jdbcType=VARCHAR},#{ResourceList.resDetailValue,jdbcType=VARCHAR},#{ResourceList.resDetailName,jdbcType=VARCHAR})
</foreach>
</insert>

批量更新的方法:

方法一:

xxxDao.java

int updateRoles(List<String> roleList);

xxDao.xml

<update id="updateRoles" parameterType="java.util.List">
update role
set enabled = '0'
where role_id in<foreach collection="list" item="roleIds" index="index" open="(" separator="," close=")"> #{roleIds}
</foreach>
</update>

方法二:

xxxDao.java

 void articleBatchUpdate(@Param("list") List<ArticleEntity> list);

xxxDao.xml

    <update id="articleBatchUpdate" parameterType="list">update articleset  base_income =<foreach collection="list" item="item" index="index"separator=" " open="case ID" close="end">when #{item.id} then  #{item.baseIncome}</foreach>,total_income =<foreach collection="list" item="item" index="index"separator=" " open="case ID" close="end">when #{item.id} then  #{item.totalIncome}</foreach>,total_views =<foreach collection="list" item="item" index="index"separator=" " open="case ID" close="end">when #{item.id} then  #{item.totalViews}</foreach>real_views =<foreach collection="list" item="item" index="index"separator=" " open="case ID" close="end">when #{item.id} then  #{item.realViews}</foreach>where id in<foreach collection="list" index="index" item="item"separator="," open="(" close=")">#{item.id}</foreach></update>

================================================================================

控制批量操作方法体:

   //批量循环操作方法: objList要操作的数据,maxValue每次批量处理的条数public void BatchSql(List<Object> objList,int maxValue) {List<Object> list = new ArrayList<>();int size = objList.size();int total = size / maxValue;if (size % maxValue != 0) {total += 1;}for (int i = 0; i < total; i++) {if (i == total - 1) {maxValue = size - (i * maxValue);}for (int j = 0; j < maxValue; j++) {list.add(objList.get(j));}// 批量处理的方法xxxDao.xxxBatchxxx(list);log.info("日志:批量xxx。。。");objList.removeAll(list);list.clear();}}

mybatis批量操作(批量查询,批量插入,批量更新)相关推荐

  1. oracle批量查询更新,Oracle批量查询、删除、更新使用BULK COLLECT提高效率

    BULK COLLECT(成批聚合类型)和数组集合type类型is table of 表%rowtype index by binary_integer用法笔记. 例1: 批量查询项目资金账户号为 & ...

  2. java mongodb批量更新数据_MongoDB的批量查询条件进行批量更新数据

    今天遇到这样一个场景:在Java中批量更新MongoDB数据,不过每次更新的条件有不一样,那如何有效地进行更新操作呢? 刚开始的时候,我是想到循环批量更新操作,即每一种查询条件进行一次批量更新过程,这 ...

  3. 对Excel表的查询、插入和更新操作

    为什么80%的码农都做不了架构师?>>>    本代码主要实现对Excel表的查询.插入和更新操作,而特别指出:Excel表的删除语句操作不支持,只能用更新来替代. using Un ...

  4. VC++对Access数据库的操作(查询、插入、更新、删除等)

    Microsoft Office Access是由微软发布的关系数据库管理系统.Access数据库常应用于小型软件系统中,比如:生产管理.销售管理.库存管理等各类企业管理软件,其最大的优点是:简单易学 ...

  5. 2批量批量查询数据插入数据_Excel如何快速对数据批量查询,vlookup+match函数高效完成工作...

    工作中当出现匹配多次数据时,此时我们就需要更改vlookup函数的第三参数,更改查询的列数.此时你是否在想我手动改就可以了.当然如果查询次数不多时,这也是一种方法.下面将用vlookup+match一 ...

  6. 2批量批量查询数据插入数据_你还在利用复制批量插入数据吗?一个oracle命令助你批量插入数据...

    大家好,我是RomMr,一个务实的科技人! 你还在用复制.粘贴的办法批量修改数据库数据吗?今天就和大家分享一个可以直接调用文档的命令来帮助大家批量修改,插入数据. 1.start 和 @ 命令 当我们 ...

  7. python mysql批量查询_Python + MySQL 批量查询百度收录

    做SEO的同学,经常会遇到几百或几千个站点,然后对于收录情况去做分析的情况 那么多余常用的一些工具在面对几千个站点需要去做收录分析的时候,那么就显得不是很合适. 在此特意分享给大家一个批量查询百度收录 ...

  8. 轻松解决批量查询问题——域名批量查询工具推荐

    在现代互联网时代,域名已成为了企业品牌和网站建设不可或缺的一部分.但是,对于需要大规模查询域名的人来说,手动逐一查询每个域名的可用情况无疑是一项耗时耗力的任务.幸运的是,现在有许多域名批量查询工具可以 ...

  9. 域名批量查询 网站域名批量查询

    最近入职了一家SEO公司,领导安排了建100个网站的任务,需要找老域名来做,手动一个一个非常的耗时间,但是有什么方法可以快速域名批量查询呢? 最近发现使用iis7站长之家的域名批量查询查功能,很方便且 ...

  10. 快递批量查询助手-快递批量查询软件-拼多多快递批量查询助手

    快递批量查询助手是一款可以全自动批量查询的物流信息查询软件,非常方便,界面友好! 汇集时效监控.延误查询.揽收查询.条件筛选(强大的筛选功能)等等一体化快递查询软件.

最新文章

  1. 无序数组及其子序列的相关问题研究
  2. [Ubuntu] Ubuntu系统环境变量详解
  3. C# action,delegate,func的用法和区别
  4. 04-Flutter移动电商实战-打通底部导航栏
  5. 苹果是世界最高市值的公司,为什么苹果公司没有出现首富?
  6. 设计模式(三):单例模式
  7. 我的U盘,在某台机器上所有文件大小为0
  8. Support Vector Machine's Large Margin
  9. Linux下网络测试工具tcpping、tcptraceroute的使用
  10. 微信公众号迁移流程参考
  11. ZKFinger Live20R 版对接java - B/S(ZKFinger SDK 5.0.0.32 )
  12. jquery的一些小小实例
  13. centOS最全下载地址
  14. Resilio Sync 设备间文件同步
  15. JVM 运行时内存空间详解——元空间
  16. 戴记严选GM3323D 鼠标左右键失效 解决办法
  17. [转] 能不吃最好别吃:一个食品专业本科生的自白
  18. 【优化求解】基于加权黑猩猩算法WCHoA求解单目标问题matlab源码
  19. Kalibr安装教程
  20. java实现环形队列

热门文章

  1. WPS正式推出了JS宏(WPS宏编辑器)如何切换会传统VB环境
  2. Python菜鸟教程第二十课之初识Django
  3. a标签的href属性长度限制
  4. 自然语言处理中的伪数据 by哈工大教授车万翔
  5. dog log 算子_灰度图像--图像分割 Marr-Hildreth算子(LoG算子)
  6. opencv3/C++ 机器学习-EM算法/Expectation Maximization
  7. MATLAB计算自相关函数和互相关函数
  8. 如何选择HR人事管理软件?HR人事管理系统软件有哪些
  9. unity之小地图和聊天室
  10. 路由守卫(全局钩子(全局路由守卫)、路由单独钩子(router独享守卫))