问题
最近在做项目的时候,使用到了Mybatis(mysql数据库)的批量更新的功能,批量更新一条记录是正常的,但是一次批量更新多条的时候却出现了如下图的异常:
首先贴上我的动态sql:
异常信息:
image.png
原因分析
- Mybatis批量更新原理: 在一个statament语句同时执行多条update语句
- mysql默认一个statament语句只能执行一个udpate语句
解决办法
-
mysql的jdbc连接字符串中增加allowMultiQueries=true属性,如下图:
image.png - 在程序中对SQL语句以分号拆分成多条SQL语句,然后使用Statement的addBatch方法,最后executeBatch就行
注意
Mybatis批量更新,不管更新了多少条记录,返回影响行数都为1,如下图:
参考
https://blog.csdn.net/zyz511919766/article/details/7336279
网友评论