mybatis 实现批量更新的三种方式

注:Mybatis实现批量更新有三种方式,分别是使用foreach标签、使用SQL的case when语句和使用动态SQL的choose语句。具体实现方法如下:

1:使用foreach标签

sql 复制代码
<update id="batchUpdate" parameterType="java.util.List">
  update user set name=#{name}, age=#{age} where id=#{id}
  <foreach collection="list" item="item" index="index" separator=";">
    update user set name=#{item.name}, age=#{item.age} where id=#{item.id}
  </foreach>
</update>

2:使用SQL的case when语句

sql 复制代码
<update id="batchUpdate" parameterType="java.util.List">
  update user set name = case id
    <foreach collection="list" item="item" index="index" separator=" ">
      when #{item.id} then #{item.name}
    </foreach>
  end,
  age = case id
    <foreach collection="list" item="item" index="index" separator=" ">
      when #{item.id} then #{item.age}
    </foreach>
  end
  where id in
  <foreach collection="list" item="item" index="index" open="(" close=")" separator=",">
    #{item.id}
  </foreach>
</update>

3:使用动态SQL的choose语句

sql 复制代码
<update id="batchUpdate" parameterType="java.util.List">
  <foreach collection="list" item="item" index="index" separator=";">
    <choose>
      <when test="item.name != null and item.age != null">
        update user set name=#{item.name}, age=#{item.age} where id=#{item.id}
      </when>
      <when test="item.name != null">
        update user set name=#{item.name} where id=#{item.id}
      </when>
      <when test="item.age != null">
        update user set age=#{item.age} where id=#{item.id}
      </when>
    </choose>
  </foreach>
</update>
相关推荐
你三大爷23 分钟前
再探volatile原理
java
2301_7816686128 分钟前
Redis 面试
java·redis·面试
郑洁文31 分钟前
基于SpringBoot的天气预报系统的设计与实现
java·spring boot·后端·毕设
沃夫上校1 小时前
MySQL 中文拼音排序问题
java·mysql
要一起看日出1 小时前
MVCC-多版本并发控制
数据库·mysql·mvcc
Hx__1 小时前
MySQL InnoDB 的 MVCC 机制
数据库·mysql
速易达网络1 小时前
ASP.NET MVC 连接 MySQL 数据库查询示例
数据库·asp.net·mvc
Dcs1 小时前
用 Python UTCP 直调 HTTP、CLI、MCP……
java
玉衡子1 小时前
MySQL基础架构全面解析
数据库·后端
快乐肚皮1 小时前
fencing token机制
java·fencing token