Mybatis批量执行SQL

Mybatis批量执行SQL,第1张

此处仅描述问题处理方法,关于mysql、mybatis的内容不在此赘述。

因为项目需要,需要在mybatis同个标签中执行多条sql语句。如下:

寻思着,在mysql中同时执行多条语句时,mysql是一条一条执行的。如果我一次性向mysql发送多条语句,它应该也会这么执行的。

我承认一开始想的太简单了,直接这样做的结果,是会在jdbc驱动层面报出语法错误异常,程序无法执行下去。

debug后发现,从mybatis拼装sql,到语句传入jdbc驱动,语句都是正常的,但是在mysql驱动验证sql合法性时,sql被截断,它认为一次性发过去的多条sql是不合法的。

看了网上很多说法,一说是mybatis本身不支持;一说是mysql驱动不支持。困扰很久,没能解决,后为了项目进度,暂时将sql分开执行了。

---------------------------------------------------------allowMultiQueries=true----------------------------------------------------------------------------------

但今天,有高人,跟我说,这样做不行,是因为你没有让mysql驱动开启批量执行sql的开关。

怎么开启呢?在拼装mysql链接的url时,为其加上allowMultiQueries参数,设置为true,如下:

加了参数后,我又将mybatis配置文件改了回去,测试一下,执行成功。

这里记录一下,希望对看到的人,有所帮助。

附MYSQL 多表更新 语句

1、将你要执行的sql语句写入一个txt文件中;

2、修改文件后缀为.sql文件;

3、使用 “source + 路径+文件名”

注:source与路径之间有空格。

可以使用批处理,调用 isql 执行 .sql文件。

1、 新建test.sql 文件。如图,代码执行删除 表a中id='1'的记录。

2、新建批处理test.bat。如图:

3、运行批处理test.bat即可执行,test.sql中的SQL语句。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11748198.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存