数据库和mybatis批量更新数据

1. postgresql (update 支持 from)

update test set info=tmp.info from (values (1,'new1'),(2,'new2'),(6,'new6')) as tmp (id,info) where test.id=tmp.id;  

mybatis

<update id="updateBatch">
        update send_warn_sms_to
        <set>
            message=tmp.message
        </set>
        from (
            values
            <foreach collection="list" item="item" separator=",">
                (#{item.id}, #{item.message})
            </foreach>
        ) as tmp(id, message)
        <where>
            send_warn_sms_to.id=tmp.id
        </where>
    </update>

2. case when

CASE case_value
    WHEN when_value THEN statement_list
    [WHEN when_value THEN statement_list] ...
    [ELSE statement_list]
END CASE
CASE
    WHEN search_condition THEN statement_list
    [WHEN search_condition THEN statement_list] ...
    [ELSE statement_list]
END CASE

还可以参考:Oracle 联表更新(复杂查询及作用域)

おすすめ

転載: blog.csdn.net/huofuman960209/article/details/118667831