この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
MybatisでOracleにList<object>を一括update
mybatisを利用して、OracleDBにList<object>を一括update方法を紹介します。
■ mapperメソッド定義:
int updateBatch(@Param (“itemList” ) List<objectclass> itemList);
itemListを一括DBにupdateします。
■ NGパターン
<update id="updateBatch" parametertype="java.util.List">
<foreach collection="itemList" item="item" separator=";">
update TABLEAAA
<set>
C1 = #{item.c1},
C2 = #{item.c2}
</set>
WHERE ID = #{item.id}
</foreach>
</update>
書き方は大丈夫そうな感じですが、実はエラーが発生します。
Oracleの場合は特別です。
■ OKパターン
<update id="updateBatch" parametertype="java.util.List">
begin
<foreach collection="itemList" item="item" separator=";">
update TABLEAAA
<set>
C1 = #{item.c1},
C2 = #{item.c2}
</set>
WHERE ID = #{item.id}
</foreach>
;end;
</update>