mybatis执行批量更新的时候,总会报错。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis执行批量更新的时候,总会报错。相关的知识,希望对你有一定的参考价值。

错误内容:Error updating database. Cause: org.h2.jdbc.JdbcSQLException: Invalid value "3" for parameter "parameterIndex" [90008-175]
### The error may involve com.its.itone.riipservice.service.impl.mapper.RuleCommandMapper.batchUpdate-Inline

映射配置:
<update id="batchUpdate" parameterType="java.util.List">

<foreach collection="list" item="item" open="" close="" separator=";" >
UPDATE hec_rule_command SET c_exe_order = #item.exeOrder WHERE c_id = #item.id
</foreach>

</update>
service 调用: count = commandMapper.batchUpdate(commandList);

参考技术A 你这条sql就有问题,批量后面的id怎么会是= ,批量的id是个数组,批量的关键字是in

mybatis执行批量更新batch update 的方法(oracle,mysql)

有时候oracle的最后一个sql少个分号,要在end前面加上分号
 
oracle和mysql数据库的批量update在mybatis中配置不太一样:
oracle数据库:
<update id="batchUpdate" parameterType="java.util.List"> <foreach collection="list" item="item" index="index" open="begin" close="end;" separator=";"> update test <set> test=${item.test}+1 </set> where id = ${item.id} </foreach> </update>
mysql数据库:
mysql数据库采用一下写法即可执行,但是数据库连接必须配置:&allowMultiQueries=true
例如:jdbc:mysql://192.168.1.236:3306/test?useUnicode=true&amp;characterEncoding=UTF-8&allowMultiQueries=true
<update id="batchUpdate" parameterType="java.util.List"> <foreach collection="list" item="item" index="index" open="" close="" separator=";"> update test <set> test=${item.test}+1 </set> where id = ${item.id} </foreach> </update>

以上是关于mybatis执行批量更新的时候,总会报错。的主要内容,如果未能解决你的问题,请参考以下文章

mybatis中批量更新的问题

mybatis执行批量更新batch update 的方法(oracle,mysql)

mybatis执行批量更新batch update 的方法(oracle,mysql)

Mybatis 批量更新 ORA-00911: 无效字符的错误

spring+mybatis一个方法执行多条更新语句,实现批量DML

Mybatis在oracle批量更新