美文网首页
批量更新余额字段

批量更新余额字段

作者: 程序员的幻想乡 | 来源:发表于2020-08-31 20:45 被阅读0次

    摘要

    mybatis批量增加,mybatis批量减少某字段值,mybatis批量更新

    需求描述

    业务需求是用户批量提交50万条国际短信,每个国家发送价格可能不一样,故扣费50万次。
    扣费操作在缓存中进行,然后定期同步到数据库中,扣减库中余额。
    笔者在更新时,打算把变更做批量更新,网上批量更新多是批量设置值,如原值1,变更为2;却没有原值是1,变更后为1+2的文章。
    笔者写此文章,希望能给大家一些帮助。

    mybatis

        <update id="updateBalanceBatch">
            UPDATE account_balance
            <trim prefix="SET" suffixOverrides=",">
                <trim prefix="balance =case" suffix="end,">
                    <foreach collection="list" item="item" index="index">
                        when account_name =#{item.accountName} then account_balance.balance + #{item.balance,jdbcType=DECIMAL}
                        <!-- account_balance.balance 这里是原值 -->
                        <!-- 新值 = 原值 + 变更值 -->
                    </foreach>
                </trim>
            </trim>
            where account_name in
            <foreach collection="list" item="item" index="index" separator="," open="(" close=")">
                #{item.accountName,jdbcType=VARCHAR}
            </foreach>
        </update>
    

    mysql

        UPDATE  account_balance
        SET balance =
        CASE
            WHEN account_name ='cl111' THEN account_balance.balance + 1
            WHEN account_name ='cl222' THEN account_balance.balance + 1
            WHEN account_name ='cl333' THEN account_balance.balance + 2
        END
        WHERE
            account_name IN (
                'cl111',
                'cl222',
            'cl333' 
        )
    

    相关文章

      网友评论

          本文标题:批量更新余额字段

          本文链接:https://www.haomeiwen.com/subject/hpfhbctx.html