mybatis中如何实现一个标签执行多个sql语句
作者:想养一只!
mybatis一个标签执行多个sql语句
在删除标签中想要添加另外三个sql实现主键重新排序的功能,这样一个 delete 标签里面一共是需要执行四个sql语句,测试的时候一直报错说语法有问题,但在数据库中测试sql又是成功的。
问题
其实这个语法是没有问题的,报错提示语法错误的主要原因是因为配置不对,导致这样编写的格式在mybatis中不被承认,所以才会语法错误。
解决
在配置数据源的地方添加 allowMultiQueries=true 即可,表示允许多条sql语句执行(记得在前面使用&隔开)。
mybatis+mysql中一个标签内写两条sql语句报错
<update id="bindStu"> update edu_student set user_username=#{user_username} where stu_id = #{stu_id}; update edu_user set stu_id=#{stu_id} where user_username=#{user_username}; </update>
报错如下
### Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL
syntax; check the manual that corresponds to your MySQL server version for the right
syntax to use near 'update edu_user set stu_id='2' where user_username='111'' at line 2
### The error may exist in com/yue/mapper/UserMapper.xml ### The error may involve
defaultParameterMap ### The error occurred while setting parameters ### SQL: update
edu_student set user_username=? where stu_id = ?; update edu_user set stu_id=? where
user_username=?; ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL
server version for the right syntax to use near 'update edu_user set stu_id='2' where
user_username='111'' at line 2 ; bad SQL grammar []; nested exception is
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL
syntax; check the manual that corresponds to your MySQL server version for the right
syntax to use near 'update edu_user set stu_id='2' where user_username='111'' at line 2
经查阅资料后发现
mybatis+mysql时可以一个标签内写多条语句,只不过需要mybatis在连接mysql时在url处加上allowMultiQueries=true
如下,在末尾加上即可:
jdbc.url=jdbc:mysql://localhost:3306/ssmbuild? useSSL=false&useUnicode=true&characterEncoding=utf8&allowMultiQueries=true
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。