MyBatis-批量update

1、循环update语句

通过循环,依次执行update语句,效率较低

MyBatis写法:

<update id="updateCarrierWayStatus" parameterType="java.util.List"><foreach collection="list" item="item" index="index" separator=";">UPDATE order_main_info<set><if test="item != null">carrier_way_flag = #{item.carrierWayFlag},remarks = #{item.remarks}</if></set>WHERE customer_order_no = #{item.customerOrderNo}</foreach>
</update>

这个方式需要注意两点:

  1. 数据连接需要加一个允许批量执行的配置 &allowMultiQueries=true

  2. list不可以为空,会报空语句错误

2、利用Case When

利用case when 只有一条update执行语句

MyBatis写法:

<update id="updateCarrierWayStatus" parameterType="java.util.List">update order_main_info<trim prefix="set" suffixOverrides=","><trim prefix="carrier_way_flag = case" suffix="end,"><foreach collection="list" item="item" index="index"><if test="item.carrierWayFlag != null">when customer_order_no = #{item.customerOrderNo} then #{item.carrierWayFlag}</if></foreach></trim><trim prefix="remarks = case" suffix="end,"><foreach collection="list" item="item" index="index"><if test="item.remarks != null">when customer_order_no = #{item.customerOrderNo} then #{item.remarks}</if></foreach></trim></trim>where customer_order_no in<foreach collection="list" index="index" item="item" separator="," open="(" close=")">#{item.customerOrderNo,jdbcType=VARCHAR}</foreach></update>

执行效果

update order_main_info set carrier_way_flag = case when customer_order_no = ? then ? end, remarks = case when customer_order_no = ? then ? end where customer_order_no in ( ? )

MyBatis-批量update相关推荐

  1. MYBATIS 批量update 报错的问题

    update table set column='...' where id in (1,2,3)l 这样的sql就可以了.Mybatis中这样写就行 <update id="batc ...

  2. Mybatis批量update修改实例

    UserMapper.xml 配置: <sql id="condition4Update"><where><if test="orgNo ! ...

  3. mybatis批量插入(insert)和批量更新(update)

    文章目录 一.Mybatis批量插入 二.批量更新 前言:这两天在做mybatis批量插入和更新的时候,对这块不是很清楚,所以今天写篇文章,巩固加深印象. 一.Mybatis批量插入 批量插入的sql ...

  4. mybatis mysql 批量更新_mysql批量update更新,mybatis中批量更新操作

    在日常开发中,有时候会遇到批量更新操作,这时候最普通的写法就是循环遍历,然后一条一条地进行update操作.但是不管是在服务端进行遍历,还是在sql代码中进行遍历,都很耗费资源,而且性能比较差,容易造 ...

  5. mybatis java传参_[Java教程]Mybatis批量和传参

    [Java教程]Mybatis批量和传参 0 2014-07-31 04:00:12 MyBatis中批量插入 方法一: resultType="java.lang.String" ...

  6. MyBatis批量增删改的另外一种思路(推荐)

    零.传统拼接SQL语句的弊端 传统上利用Mybatis进行批量操作的方式本质来说是拼接SQL语句,然后交给底层执行,如之前博文而言. 其实这种方式是存在弊端的: 1. SQL语句可能会过长,DB的引擎 ...

  7. Mybatis批量更新数据

    Mybatis批量更新数据 第一种方式 [html] view plaincopy print? <update id="updateBatch" parameterType ...

  8. Mybatis批量更新转

    Mybatis批量更新 批量操作就不进行赘述了.减少服务器与数据库之间的交互.网上有很多关于批量插入还有批量删除的帖子.但是批量更新却没有详细的解决方案. 实现目标 这里主要讲的是1张table中.根 ...

  9. mybatis批量更新及其效率问题

    mybatis批量更新及其效率问题 一:背景 注意: 第一种: 第二种: 二:批量更新的方式总结: 第一种: 第二种: 三:总结: 最近,负责公司一些旧数据的批量整理和清洗工作,在网上寻找了两种myb ...

  10. mybatis批量更新 mysql 报错,Mybatis批量更新报错问题

    下面给大家介绍mybatis批量更新报错问题, allowMultiQueries=true 后来发现是jdbc链接没有加允许批量更新操作的参数引起的,不加会报badsql,mysql版的mybati ...

最新文章

  1. jQuery--AJAX传递xml
  2. Python之PIL之绘图:基于Python的PIL库绘制各种图形、添加文字等
  3. c 命令导出数据到mysql_MySQL命令行导出数据库
  4. PWN-PRACTICE-BUUCTF-8
  5. ntfs安全权限和共享权限的区别
  6. 整合mybatis3.2.2跟spring3.0.1
  7. java控制进程_⑨进程控制
  8. VMware SD-WAN 修复6个漏洞,可关闭整个企业网络
  9. Aqua - Mac OS X平台的用户界面(user interface)
  10. CodeForces 598A Tricky Sum
  11. 计算机程序员crc算法,CRC-8校验原理及软件实现
  12. 使用Java解牛客网六一儿童节
  13. PTA习题【python】 6-8 jmu-python-发牌
  14. 【数据结构和算法】赫夫曼树 | 实战演练(二)
  15. 数学建模学习1.22——多元回归分析
  16. 介绍部电影“Sicko”,迈克尔摩尔拍摄的抨击美国医疗体制的纪录片
  17. 从为何“万事开头难”谈大型网站应用设计——运用冥想
  18. 第十一章 会打电话 天涯变咫尺 不会打电话 咫尺变天涯
  19. android 5.0 按钮颜色,Android 5.0系统默认颜色
  20. 我的自制h1940红外遥控增强器(含软件及硬件制作方法)

热门文章

  1. 湖北性能优良戴尔服务器,超高密度的1U机架 戴尔R630服务器评测
  2. 解决企业数字化“历史遗留问题”,低代码具备天然优势 | 专访腾讯云微搭骆勤
  3. Javascript 历史遗留 - 产生的语法问题整理
  4. 19.1 NESMA 唯一和非唯一搜索条件的组合 案例研究
  5. 一份标准的软件测试方案模板
  6. Android 9格锁屏
  7. 为什么程序员话少钱多死得早?-一位人生悲惨的程序员与你讲述其中原因
  8. 持续集成工具 Jenkins vs TeamCity
  9. Java项目—健身房管理系统(附源码+文档)
  10. 逻辑树与视觉树基本概念