Mybatisバッチ更新問題:問題解決における継続的なブレークスルー

mybatisのバッチ更新バグ修正プロセスを覚えておいてください

バージョン1

<update id="updateIsDelStatus" parameterType="java.util.List">
  <foreach collection="list" item="item" index="index" separator=";" close="" open="">
    update inp_record set IR_IsDel = -1
    where IR_ID = #{item,jdbcType=INTEGER}
  </foreach>
</update>

バージョン1でテスト中にエラーが報告されました。フロントエンドとの共同デバッグでは、パラメータリストへの単語のサイズがそれほど大きくないことを考慮して(サイズ<= 10を制御するにはで使用することをお勧めします)、一時的にバージョン2を使用します。緊急修理用

バージョン2

<update id="updateIsDelStatus" parameterType="java.util.List">
    update inp_record set IR_IsDel = -1
    where IR_ID in
  <foreach collection="list" item="item" index="index" separator="," close=")" open="(">
    #{item,jdbcType=INTEGER}
  </foreach>
</update>

問題は基本的には解決しましたが、物事の愚かな扱いでは問題を解決できないと感じたので、徹底的に調べたところ、Mybatisはデフォルトで1つのSQLしか実行しないため、バージョン1は複数を実行するように記述されていますSQLなので、最初になります。文がsqlの場合、エラーが報告されます。

解決:

jdbcurlパスを追加します:allowMultiQueries = true

ただし、複数のSQLを使用して同時に実行することはお勧めしません。実際のビジネスシナリオに従って、単一のSQLを使用してビジネスロジックを実装するようにしてください。

 

おすすめ

転載: blog.csdn.net/A___B___C/article/details/95452299