问题
先带大家看一段SQL的配置
<update id="updateStatusByMid">
<foreach collection="list" item="item" index="index" open="" close="" separator=";">
update sms_detail
<set>
status= #{item.status}
</set>
where mid= #{item.mid}
</foreach>
</update>
这里用到了Mybatis的动态SQL,看似很正常的一段SQL。可是,只要一执行起来就报语法错误。
解决方案
开始以为是 SQL的问题,后来排查发现是数据库配置的问题。Mybatis批量插入时必须在连接地址后面加allowMultiQueries=true
这个参数。
作用
MySQL连接数据库时,添加语句:“allowMultiQueries=true”的作用:
1.可以在sql语句后携带分号,实现多语句执行。
2.可以执行批处理,同时发出多个SQL语句。
参考文献
https://www.ahfesco.com.cn/affairs/Article.asp?id=3232
https://blog.csdn.net/wangmeng951011/article/details/67640027