我是靠谱客的博主 温婉盼望,最近开发中收集的这篇文章主要介绍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

最后

以上就是温婉盼望为你收集整理的mysql+mybatis在使用foreach标签需要注意多条sql执行的问题的全部内容,希望文章能够帮你解决mysql+mybatis在使用foreach标签需要注意多条sql执行的问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部