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

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

image.png

异常信息:


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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 11,164评论 0 4
  • Mybatis相关 1.Mybatis是什么? 2.为什么选择Mybatis? 3、#{}和${}的区别是什么? ...
    梦殇_fccd阅读 4,544评论 0 5
  • Kiki Zhu是我所认识的朋友中唯一一个对“优雅”一词很有主见的姑娘。“我认为优雅是种生活态度,从容、美,是生活...
    D3舍阅读 3,229评论 0 0
  • 最爱湖东行不足,绿杨阴里白沙堤。
    甜蜜荔枝阅读 1,898评论 0 3
  • 那时杰克还是个温文儒雅的绅士。 艾玛也只是个普通的园丁,每天剪一些新鲜的玫瑰花出来贩卖。 那是在一个初夏的早晨...
    灼屿_阅读 4,030评论 2 3