Mybatis使用foreach批量更新数据报无效字符错误问题

 更新时间:2024年08月19日 10:44:31   作者:MiracleSang  
这篇文章主要介绍了Mybatis使用foreach批量更新数据报无效字符错误问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

使用foreach批量更新数据报无效字符错误

改动前

<update id="updateByECBoxIdBatch" parameterType="java.util.List">
    <foreach collection="list" item="item" index="index" open="" close=";" separator=";">
        update EC_ENTRUST_BOX
        set REALMONEY = #{item.money,jdbcType=DECIMAL}
        where BOX_ID = #{item.boxId,jdbcType=VARCHAR}
        and ENTRUST_MONEY_ID = #{item.ecEntrustMoneyId,jdbcType=VARCHAR}
    </foreach>
</update>

后台执行的SQL:

update EC_ENTRUST_BOX
set REALMONEY = ?
where BOX_ID = ?
and ENTRUST_MONEY_ID = ?
;
update EC_ENTRUST_BOX
set REALMONEY = ?
where BOX_ID = ?
and ENTRUST_MONEY_ID = ?
;
update EC_ENTRUST_BOX
set REALMONEY = ?
where BOX_ID = ?
and ENTRUST_MONEY_ID = ?
;

报错:无效字符

改动后:(加了begin,end)

<update id="updateByECBoxIdBatch" parameterType="java.util.List">
    <foreach collection="list" item="item" index="index" open="begin" close=";end;" separator=";">
        update EC_ENTRUST_BOX
        set REALMONEY = #{item.money,jdbcType=DECIMAL}
        where BOX_ID = #{item.boxId,jdbcType=VARCHAR}
        and ENTRUST_MONEY_ID = #{item.ecEntrustMoneyId,jdbcType=VARCHAR}
    </foreach>
</update>

后台执行的SQL:

begin
update EC_ENTRUST_BOX
set REALMONEY = ?
where BOX_ID = ?
and ENTRUST_MONEY_ID = ?
;
update EC_ENTRUST_BOX
set REALMONEY = ?
where BOX_ID = ?
and ENTRUST_MONEY_ID = ?
;
update EC_ENTRUST_BOX
set REALMONEY = ?
where BOX_ID = ?
and ENTRUST_MONEY_ID = ?
;end;

正常执行~~~~~~~~

Mybatis报“无效字符”的错的原因

mybatis报ORA-00911: 无效字符。

原因是

在mapper配置中有“;”

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot工程创建的四种方式详解

    SpringBoot工程创建的四种方式详解

    本文介绍四种创建Spring Boot项目的方法(IDEA联网、官网、阿里云源、手动配置),并解答JDK版本、Maven设置等常见问题,最终实现集成tess4j进行图片文本识别,感兴趣的朋友一起看看吧
    2025-06-06
  • springboot项目中没有识别到yml文件解决办法

    springboot项目中没有识别到yml文件解决办法

    这篇文章主要给大家介绍了springboot项目中没有识别到yml文件解决办法,文中通过代码示例给大家讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-01-01
  • 解读SpringBoot为什么要用DeferredImportSelector

    解读SpringBoot为什么要用DeferredImportSelector

    这篇文章主要介绍了SpringBoot为什么要用DeferredImportSelector的情况,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-03-03
  • Maven依赖作用域和依赖传递的使用

    Maven依赖作用域和依赖传递的使用

    本文主要介绍了Maven依赖作用域和依赖传递的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Android仿微信实现左滑显示删除按钮功能

    Android仿微信实现左滑显示删除按钮功能

    这篇文章主要为大家详细介绍了java仿微信实现左滑显示删除按钮功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • 浅谈idea live template高级知识_进阶(给方法,类,js方法添加注释)

    浅谈idea live template高级知识_进阶(给方法,类,js方法添加注释)

    下面小编就为大家带来一篇浅谈idea live template高级知识_进阶(给方法,类,js方法添加注释)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • 如何通过javacv实现图片去水印(附代码)

    如何通过javacv实现图片去水印(附代码)

    这篇文章主要介绍了如何通过javacv实现图片去水印(附代码),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • JDK动态代理步骤详解(源码分析)

    JDK动态代理步骤详解(源码分析)

    这篇文章主要介绍了JDK动态代理步骤详解,首先需要创建一个实现接口InvocationHandler的类,它必须实现invoke方法 ,最后通过Proxy的静态方法实现此操作,需要的朋友可以参考下
    2021-06-06
  • 零基础后端入门之JDK21 + PostgreSQL+Java项目实操指南

    零基础后端入门之JDK21 + PostgreSQL+Java项目实操指南

    后端开发是指开发基于服务器端的软件应用程序,也称为系统的后台或服务器端编程,后端程序员负责处理网站或应用程序后台的逻辑和功能,这篇文章主要介绍了零基础后端入门之JDK21+PostgreSQL+Java项目实操的相关资料,需要的朋友可以参考下
    2026-05-05
  • Springmvc DispatcherServlet原理及用法解析

    Springmvc DispatcherServlet原理及用法解析

    这篇文章主要介绍了Springmvc DispatcherServlet原理及用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09

最新评论