批量更新语句(XML映射)如下:
<!--批量更新用户表数据-->
<update id ="updateBatch" parameterType="java.util.List">
<foreach collection ="users" item="user" index= "index" close=";" separator =";">
update user
<set>
name = #{user.name}
</set>
<where>
id =#{user.id}
</where>
</foreach>
</update>
Insomnia测试接口【测了两条数据】,结果报错:
后台查看异常信息如下:
更奇怪的是,批量操作一条数据是OK的:
哪里有问题呢?
原来,Mybatis映射文件中的sql语句默认是不支持以" ; " 结尾的,也就是不支持多条sql语句的执行
但是在SQL编辑器中执行多条sql语句的时候是可以以分号结尾的,如:
解决办法:
在application.properties配置文中的数据源url后面添加一个参数
&allowMultiQueries=true 【允许sql语句中有多个insert或者update语句 == 支持sql批量操作】
原来的:
#注意SpringBoot2.0 这里的数据源url是: jdbc-url 而不是 url
spring.datasource.jdbc-url=jdbc\:mysql\://localhost\:3306/slave?useUnicode\=true&autoReconnect=true&useSSL=false&characterEncoding\=utf-8&useSSL=true
现在的:
#注意SpringBoot2.0 这里的数据源url是: jdbc-url 而不是 url
spring.datasource.jdbc-url=jdbc\:mysql\://localhost\:3306/slave?useUnicode\=true&autoReconnect=true&useSSL=false&characterEncoding\=utf-8&useSSL=true&allowMultiQueries=true
重启项目后,测试: