Mybatis -- 批量更新操作

参考:https://my.oschina.net/ckanner/blog/338515

MySQL没有提供直接的方法来实现批量更新,但可以使用case when语法来实现这个功能。

UPDATE course
    SET name = CASE id 
        WHEN 1 THEN 'name1'
        WHEN 2 THEN 'name2'
        WHEN 3 THEN 'name3'
    END, 
    title = CASE id 
        WHEN 1 THEN 'New Title 1'
        WHEN 2 THEN 'New Title 2'
        WHEN 3 THEN 'New Title 3'
    END
WHERE id IN (1,2,3)

这条sql的意思是,如果id为1,则name的值为name1,title的值为New Title1;依此类推。

在Mybatis中的配置则如下:

<!-- 批量根据userId增加用户免费提现额度 -->
<update id="batchAddQuota" parameterType="java.util.List">
    <!-- 用法参考:https://my.oschina.net/ckanner/blog/338515 -->
    update t_user_balance
    <trim prefix="set" suffixOverrides=",">
        <trim prefix="quota =case" suffix="end,">
            <foreach collection="list" item="item" index="index">
                <if test="item.userId!=null">
                    when user_id=#{item.userId} then quota+#{item.quota}
                </if>
            </foreach>
        </trim>
    </trim>
    where
    <foreach collection="list" item="item" index="index" separator="or">
        user_id=#{item.userId}
    </foreach>  
</update>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值