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就是入参,入参对象含有idvalue属性。需求是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>
上一篇下一篇

猜你喜欢

热点阅读