MyBatis - 批量更新(update foreach)报错

时间:2025-01-24 16:14:42

在使用mybatis执行批量更新(update foreach)数据的时候报错如下:

:
### Error updating database. Cause: .: 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 '......
### The error may involve .... 
### The error occurred while setting parameters ### SQL:

刚开始一直以为是自己SQL写错了,但是检查N遍,发现也没问题,而且到Navicat中执行也没说SQL报错,批量更新SQL如下:

 <!--批量更新报表 -->
 <update  parameterType="">
  <foreach collection="userList" item="item" index="index" separator=";">
   update sys_user
   <set>
    <if test=" != null and != ''">user_name = #{}, </if>
    <if test=" != null">user_no = #{ }, </if>
    ...
    updated_time = now()
   </set>
   where id = #{} 
  </foreach>
 </update>
解决方案

MySQL的批量更新是要我们主动去设置的,使用mybatis进行批量插入与更新时,必须在配置连接url时加上 &allowMultiQueries=true 即可

jdbc:mysql://xx:3306/test?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&rewriteBatchedStatements=true&allowMultiQueries=true