2500-使用MyBatis操作MySQL进行批量更新的踩坑点‘multi-statement not allow‘

原则上一条SQL只更新一条数据库操作,但有时需要批量操作数据,特别是一些DML语句,在操作数据库时,数据库会报出异常,不允许混合语句,此时需要额外配置进行兼容。

例如:

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'update purchase_instrument_bill_detail   
                 SET out_count = '1',
' at line 8

Caused by: java.sql.SQLException: sql injection violation, multi-statement not
allowcom.alibaba.druid.wall.WallFilter.check(WallFilter.java:714) 
atcom.alibaba.druid.wall.WallFilter.connection_prepareStatement(WallFilter.java:240) 
atcom.alibaba.druid.filter.FilterChainImpl.connection_prepareStatement(FilterChainImpl.java:448)
atcom.alibaba.druid.filter.FilterAdapter.connection_prepareStatement(FilterAdapter.java:928) 

解决方案:

  1. 数据库连接加参数
  2. 连接池需要配置
1. 数据库连接加参数

添加参数allowMultiQueries=true

可解决数据库连接层面的异常问题,指定连接数据库时,可执行混合SQL。

参考连接配置: jdbc:mysql:// d a t a s o u r c e . h o s t : {datasource.host}:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值