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语句),这样问题就解决了。
千万不要试图去研究 研究了很久都整不明白的东西,或许是层次不到,境界未到,也或许是从未在实际的应用场景接触过,这种情况下去研究,只会事倍功半,徒劳一番罢了。能做的就是不断的沉淀知识,保持一颗积极向上的学习心态,相信终有一天所有的困难都会迎刃而解。