MyBatis批量更新:
1、传统方式 循环单条数据更新,更新每一条数据都要重新连接和断开数据库。(不推荐)
2、批量更新 一次数据库连接中完成(推荐)
思路:首先来看需要生成的 SQL
UPDATE TABLE t
SET COLUMN = CASE t.whereColumn
WHEN a THEN 1
WHEN b THEN 2
WHEN c THEN 3
END
WHERE
t.whereColumn IN ( a,b,c )
需要生成的sql出来了, 那么我们就根据这个sql照葫芦画瓢,改写成mapper
<!--批量更新-->
<update id="updateBatch" parameterType="java.util.List">
UPDATE table t
<trim prefix="SET" suffixOverrides=",">
<trim prefix="column = CASE t.whereColumn" suffix="END,">
<foreach collection="list" item="item" index="index">
WHEN #{item.whereColumn} THEN #{item.column}
</foreach>
</trim>
</trim>
<where>
t.whereColumn IN
<foreach collection="list" item="item" open="(" separator="," close=")">
#{item.whereColumn}
</foreach>
</where>
</update>
以上是简单的 单条件判断,多条件则再写几个 case when end即可!~
随手记,有问题请留言!~~