您的位置:首页 > 其它

Mybatis 批量更新失败,单条成功

2017-08-28 14:16 162 查看

Mybatis 批量更新失败,单条成功

在项目开发过程中,结合业务场景,需要对某个表进行批量更新,完成所有的业务代码和Mybatis XML文件后,单元测试时,发现调用批量更新只有一条记录时,执行成功,传入多条记录,进行批量更新时,则提示失败,错误信息如下:

org.springframework.jdbc.BadSqlGrammarException:
### Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 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:


其中XML映射批量更新的结构如下:

<!--  批量更新 -->
<update id="batchUpdate" parameterType="java.util.List">
<foreach collection="list" item="item" separator=";">
update xxxxxx
<set>
<if test="item.xxx!= null">
xxx= #{item.xxx,jdbcType=BIGINT},
</if>
......
</set>
where id =#{item.id}
</foreach>
</update>


经过代码排查,以及批量update语句通过SQL工具直接执行均能成功,排除代码和sql语句问题,最后求助Google大神,发现使用mybatis进行批量插入与更新时,必须在配置连接url时指定allowMultiQueries=true

mysql.db.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&&allowMultiQueries=true


经测试,完美解决此问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: