时间:2021-05-19
如下所示:
<!--批量更新报表 --> <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
补充知识: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
经测试,完美解决此问题。
以上这篇解决mybatis批量更新(update foreach)失败的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
主要在JDBC链接中加入这个参数即可:useAffectedRows=true补充知识:mybatis批量update,返回行数为-1mybatis批量更新返回
遇到win8.1update更新失败怎么办?下文将告诉大家win8.1update升级更新失败解决方法,如果你在升级过程中不慎失败,其实解决方法很简单哦~大
简介:mybatis的批量操作减少数据库连接次数一、mapper使用foreach遍历 批量insert:INSERTINTOemp(ename,gender
mybatis的foreach标签经常用于遍历集合,构建in条件语句或者批量操作语句。下面是foreach标签的各个属性属性描述collection表示迭代集合
下面给大家介绍mybatis批量更新报错问题,allowMultiQueries=true后来发现是jdbc链接没有加允许批量更新操作的参数引起的,不加会报ba