その他
    ホーム 技術発信 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>
    記事を共有