Mybatis批量更新 updateBatch
Posted fswhq
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis批量更新 updateBatch相关的知识,希望对你有一定的参考价值。
<update id="updateBatch" parameterType="java.util.List"> update mydata_table <trim prefix="set" suffixOverrides=","> <trim prefix="status =case" suffix="end,"> <foreach collection="list" item="item" index="index"> when id=#{item.id} then #{item.status} </foreach> </trim> </trim> where id in <foreach collection="list" index="index" item="item" separator="," open="(" close=")"> #{item.id,jdbcType=BIGINT} </foreach> </update>
<trim>
属性说明
1.prefix,suffix
表示在trim
标签包裹的部分的前面或者后面添加内容
2.如果同时有prefixOverrides,suffixOverrides
表示会用prefix,suffix
覆盖Overrides
中的内容。
3.如果只有prefixOverrides,suffixOverrides
表示删除开头的或结尾的xxxOverides
指定的内容。
上述代码转化成sql
如下:
update mydata_table set status = case when id = #{item.id} then #{item.status}//此处应该是<foreach>展开值 ... end where id in (...);
有时候可能需要更新多个字段,那就需要将
<trim prefix="status =case" suffix="end,"> <foreach collection="list" item="item" index="index"> when id=#{item.id} then #{item.status} </foreach> </trim>
复制拷贝多次,更改prefix
和when...then...
的内容即可
原文链接:https://blog.csdn.net/xyjawq1/article/details/74129316
以上是关于Mybatis批量更新 updateBatch的主要内容,如果未能解决你的问题,请参考以下文章
Mybatis -- 批量更新 -- updateBatch
delphi adoquery的post和UpdateBatch