ホーム DoRuby MybatisでOracleにListを一括update

MybatisでOracleにListを一括update

この記事はアピリッツの技術ブログ「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>
記事を共有

最近人気な記事