天天看點

MySQL+MyBatis批量更新

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即可!~

随手記,有問題請留言!~~