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を使用してビジネスロジックを実装するようにしてください。