mybatis批量更新(update foreach)失败

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33833327/article/details/81531929

最近做项目时遇到一个很奇葩的现象,项目是 Spring + SpringMVC + Mybatis ,在本地进行批量更新时是成功的,但是 上线后,就一直报错,代码如下:

 <!--批量更新报表  -->
   <update id="updateIssueByBatch" parameterType="java.util.List">
        <foreach collection="issueList" item="item" index="index"  separator=";">
            update sys_issue
            <set>
                <if test="item.first != null and item.first != ''">first_class = #{item.first}, </if>
                <if test="item.second != null and item.second != ''">second_class = #{item.second}, </if>
                updated_time = now()
            </set>
            where id = #{item.Id} 
        </foreach>
  </update>
报错如下:
The error occurred while setting parameters  
问题描述:

  上网查询说是 配置mysql的时候没有开启批量插入,就查询了项目 是否 配置了 allowMultiQueries=true ,发现本地和线上都配置了该语句,问题没出在这。那么问题出在哪呢?后来发现是由于线上将 & 变成了 &amp; 造成的。

* 前后对比如下:*

修改前:
jdbc.url=jdbc:mysql://XXX/abc?useUnicode=true&zeroDateTimeBehavior=convertToNull&amp;allowMultiQueries=true
修改后:
jdbc.url=jdbc:mysql://XXX/abc?useUnicode=true&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true

该问题到此就结束了,记录下来,以防下次入坑。
如有错误,欢迎大家指出。感谢支持!

猜你喜欢

转载自blog.csdn.net/qq_33833327/article/details/81531929