mybatis 实现批量更新
2019-06-27 本文已影响0人
瞿大官人
序言
在业务开发阶段,估计我们都会遇到批量更新,而且批量更新中用到最多就是类似以下语句,像这种都是更新的值与条件一致。
update set xxx=xxx where xxx=xxx;
但是当更新的值与条件不一致的时候,就比如当id=1
的时候值为1,id=2
的时候值为2,这种sql
如何写?
条件不一致的时候跟新sql写法
条件不一致更新如下,这里引入了case when
语法。
UPDATE mytable SET
myfield = CASE id
WHEN 1 THEN 'value'
WHEN 2 THEN 'value'
WHEN 3 THEN 'value'
END
WHERE id IN (1,2,3);
mybatis中批量更新
这里的params
就是入参,入参对象含有id
和value
属性。需求是id
不一致value
也不一致。
update mytable
<set>
<foreach collection="params" item="item" open="myfield = case" close="end">
when id = #{item.id} then #{item.value}
</foreach>,
status=#{param.status},
</set>
WHERE id in
<foreach collection="ids" item="id" separator="," open="(" close=")">
#{id}
</foreach>