mysql+mybatis在使用foreach标签需要注意多条sql执行的问题

最近,接盘维护的管理后台接收到一个bug问题:批量选中一些数据进行批量操作不成功。首先,定位到了执行数据库操作报语法异常:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException。这是一个最常见的SQL异常之一,显然是sql语句有语法错误。进入到对应的mybatis的mapper的XML文件中,代码是整个update语句被foreach包裹。在排除了标点符号之后,再断点到sql执行,入参list是拿到了的,又排出了数据问题。再试着批量操作一条数据,居然成功了。此时有点懵逼,毕竟平时用到的foreach不会轻易包裹整个sql语句,而仅包裹到参数层,所以sql语句是单条执行的。而这个bug因为某些原因不得不包裹整个sql形成了多条sql语句,而默认mysql是不支持执行多条sql语句的,所以语法异常就这样出现了。mysql有个参数allowMultiQueries=true就是解决支持多条sql语句的。所以,在mybatis使用foreach时如果会出现多条sql语句执行,必须在mysql的URL地址拼接加上allowMultiQueries=true,否则必会报错

jdbc.url=jdbc:mysql://localhost:3306/dbName?useUnicode=true&useSSL=true&allowMultiQueries=true

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值