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

批量更新余额字段

作者: 程序员的幻想乡 | 来源:发表于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