Mybatis批量操作org.springframework.jdbc.BadSqlGrammarException异常问题

现象:批量操作的mapper映射文件形如

<!-- 测试执行多行语句 -->
<update id="updateLogs">
  UPDATE `sys_log` SET `symbol` = '测试模块1' WHERE `log_id` = '02c821e3b61bd0199e162b4e3a60275a';
  UPDATE `sys_log` SET `symbol` = '测试模块2' WHERE `log_id` = '09ef12e0072136b822e1e6265d139c8c';
  UPDATE `sys_log` SET `symbol` = '测试模块3' WHERE `log_id` = '17f8f203b2d834d8b6b500a46d9a9643';
</update>

分析:细看配置文件,也没发现有啥问题,把配置文件中的sql语句拿到mysql中执行也没问题,但是就是在程序执行到这里的时候,抛出org.springframework.jdbc.BadSqlGrammarException异常,这种问题不太好定位,只能猜测是Mybatis框架对批量操作有特殊要求。

方案:经过查阅得出,用Mybatis批量操作必须加上参数&allowMultiQueries=true(参数的含义:可以在sql语句后携带分号,实现多语句执行;可以执行批处理,同时发出多个SQL语句,这样问题就解决了。

原文地址:https://www.cnblogs.com/54hsh/p/13082711.html