MyBatis データをバッチ更新する方法
MyBatisはデータを一括更新するためのメソッドをいくつか提供しており、一般的なものは次の通りです。
- foreachタグを使って、コレクションを反復処理し、各要素をパラメータとしてSQL文に渡して一括更新する。例えば、
<update id="batchUpdate" parameterType="java.util.List">
UPDATE table SET column1 = #{item.value}
<foreach collection="list" item="item" separator=",">
WHERE id = #{item.id}
</foreach>
</update>
- choose-when句を使ってください:choose-when句を使うことで条件に応じて異なるSQL文を選択することができ、バルク更新も可能です。例:
<update id="batchUpdate" parameterType="java.util.List">
<foreach collection="list" item="item" separator=";">
<choose>
<when test="item.value != null">
UPDATE table SET column1 = #{item.value} WHERE id = #{item.id}
</when>
<otherwise>
UPDATE table SET column1 = NULL WHERE id = #{item.id}
</otherwise>
</choose>
</foreach>
</update>
- SQLラベル機能を使用すると、SQL文を事前に定義し、それを他のSQL文で参照して一括更新できます。例えば:
<sql id="batchUpdateSql">
UPDATE table SET column1 = #{item.value} WHERE id = #{item.id}
</sql>
<update id="batchUpdate" parameterType="java.util.List">
<foreach collection="list" item="item" separator=";">
<include refid="batchUpdateSql"/>
</foreach>
</update>
これらはMyBatisでよく使われるデータの一括変更の方法ですので、必要に応じて適切な方法を選択して使用できます。