关于Mybatis批量更新的一个小坑

问题
最近在做项目的时候,使用到了Mybatis(mysql数据库)的批量更新的功能,批量更新一条记录是正常的,但是一次批量更新多条的时候却出现了如下图的异常:
首先贴上我的动态sql:

关于Mybatis批量更新的一个小坑_第1张图片
image.png

异常信息:


关于Mybatis批量更新的一个小坑_第2张图片
image.png

原因分析

  1. Mybatis批量更新原理: 在一个statament语句同时执行多条update语句
  2. mysql默认一个statament语句只能执行一个udpate语句

解决办法

  1. mysql的jdbc连接字符串中增加allowMultiQueries=true属性,如下图:


    image.png
  2. 在程序中对SQL语句以分号拆分成多条SQL语句,然后使用Statement的addBatch方法,最后executeBatch就行

注意
Mybatis批量更新,不管更新了多少条记录,返回影响行数都为1,如下图:

image.png

参考
https://blog.csdn.net/zyz511919766/article/details/7336279

你可能感兴趣的:(关于Mybatis批量更新的一个小坑)