MyBatisでデータを一括更新する方法は何ですか?
MyBatisには、データの一括更新を実現する2つの方法が提供されています。
- foreachタグを使用すると、コレクション内の各要素に対して一括で変更を行うことができます。以下に例を示します。
<update id="batchUpdate" parameterType="java.util.List">
UPDATE table_name
SET column1 = #{listProperty.property1},
column2 = #{listProperty.property2}
WHERE id = #{listProperty.id}
</update>
In the Java code, simply pass a List containing multiple objects when calling the batchUpdate method mentioned above.
→Javaのコードで、上記のbatchUpdateメソッドを呼び出す際には、複数のオブジェクトを含むリストを渡すだけです。
- 動的SQLを使用すると、複数の変更を一度に行うことができます。以下はサンプルコードです。
<update id="batchUpdate" parameterType="java.util.Map">
<foreach collection="list" item="item" index="index" open="(" close=")" separator=";">
UPDATE table_name
SET column1 = #{item.property1},
column2 = #{item.property2}
WHERE id = #{item.id}
</foreach>
</update>
Javaのコードの中で、上記のbatchUpdateメソッドを呼び出す際には、Mapオブジェクトを渡す必要があります。このMapオブジェクトには、listという名前のListプロパティが含まれており、このListプロパティには、一括更新が必要なオブジェクトが格納されています。
どちらの方法もデータの一括変更を実現することができますが、選択は具体的な要件や実際の状況に依存します。