批量更新余额字段

摘要

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

需求描述

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

mybatis

    
        UPDATE account_balance
        
            
                
                    when account_name =#{item.accountName} then account_balance.balance + #{item.balance,jdbcType=DECIMAL}
                    
                    
                
            
        
        where account_name in
        
            #{item.accountName,jdbcType=VARCHAR}
        
    

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' 
    )

你可能感兴趣的:(批量更新余额字段)