• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

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

java 来源:github_38482082 7次浏览

最近,接盘维护的管理后台接收到一个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


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)