mybatis批量更新报错解决
在使用mybatis执行批量更新(update foreach)数据的时候
报错如下:
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:
刚开始一直以为是自己sql写错了,但是检查n遍,发现也没问题,而且到navicat中执行也没说sql报错,
批量更新sql如下:
<!--批量更新报表 --> <update id="updatebatchuser" parametertype="java.util.list"> <foreach collection="userlist" item="item" index="index" separator=";"> update sys_user <set> <if test="item.username != null and item.username!= ''">user_name = #{item.username}, </if> <if test="item.userno != null">user_no = #{item.userno }, </if> ... updated_time = now() </set> where id = #{item.id} </foreach> </update>
解决方案
mysql的批量更新是要我们主动去设置的
使用mybatis进行批量插入与更新时
必须在配置连接url时加上 &allowmultiqueries=true 即可
jdbc:mysql://xx:3306/test?servertimezone=asia/shanghai&characterencoding=utf8&usessl=false&rewritebatchedstatements=true&allowmultiqueries=true
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论