版权声明:本文为博主原创文章,未经博主允许不得转载。 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
,发现本地和线上都配置了该语句,问题没出在这。那么问题出在哪呢?后来发现是由于线上将 &
变成了 &
造成的。
* 前后对比如下:*
修改前:
jdbc.url=jdbc:mysql://XXX/abc?useUnicode=true&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
修改后:
jdbc.url=jdbc:mysql://XXX/abc?useUnicode=true&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
该问题到此就结束了,记录下来,以防下次入坑。
如有错误,欢迎大家指出。感谢支持!