mybatis foreach多次遍历问题

mybatis foreach多次遍历问题:

使用MyBatis foreach循环的时候出现了个问题,第一次循环使用的变量  第二次再次循环使用的时候  出现了报错  


Caused by: org.apache.ibatis.builder.BuilderException: Error evaluating expression 'status'.  Return value (1) was not iterable.
	at org.apache.ibatis.scripting.xmltags.ExpressionEvaluator.evaluateIterable(ExpressionEvaluator.java:65)
	at org.apache.ibatis.scripting.xmltags.ForEachSqlNode.apply(ForEachSqlNode.java:55)
	at org.apache.ibatis.scripting.xmltags.MixedSqlNode.apply(MixedSqlNode.java:33)
	at org.apache.ibatis.scripting.xmltags.IfSqlNode.apply(IfSqlNode.java:35)
	at org.apache.ibatis.scripting.xmltags.MixedSqlNode.apply(MixedSqlNode.java:33)
	at org.apache.ibatis.scripting.xmltags.TrimSqlNode.apply(TrimSqlNode.java:55)
	at org.apache.ibatis.scripting.xmltags.MixedSqlNode.apply(MixedSqlNode.java:33)
	at org.apache.ibatis.scripting.xmltags.IfSqlNode.apply(IfSqlNode.java:35)
	at org.apache.ibatis.scripting.xmltags.MixedSqlNode.apply(MixedSqlNode.java:33)
	at org.apache.ibatis.scripting.xmltags.TrimSqlNode.apply(TrimSqlNode.java:55)
	at org.apache.ibatis.scripting.xmltags.MixedSqlNode.apply(MixedSqlNode.java:33)
	at org.apache.ibatis.scripting.xmltags.IfSqlNode.apply(IfSqlNode.java:35)
	at org.apache.ibatis.scripting.xmltags.MixedSqlNode.apply(MixedSqlNode.java:33)
	at org.apache.ibatis.scripting.xmltags.DynamicSqlSource.getBoundSql(DynamicSqlSource.java:41)
	at org.apache.ibatis.mapping.MappedStatement.getBoundSql(MappedStatement.java:292)
	at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:81)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141)
	at sun.reflect.GeneratedMethodAccessor72.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:434)
	... 82 more

看到这个问题 大概能想到的就是值 被改变了  我就纳闷了一会  我在代码都没有调用啊。然后我去查了下资料,看了下源码调试了一下


这是我本身写的foreach循环


源码在  ExpressionEvaluator.java中的evaluateIterable方法:

此时我foreach 要循环的collection 是 status 看到的值是一个数组

到这里是第一个foreach 是完全没有任何问题的,第二个foreach 是直接copy第一个foreach的

然后调试发现多跑了一个status出来

此时的status 既不是一个数组也不是一个集合   所以抛出了异常

MyBatis底层的实现应该是foreach 里面的 item 作为每次循环的一个标记变量,我这里item 和  collection都重复了就导致了这个问题

解决办法就是item 换一个变量名  ,尽量不要和collection 变量名重复就行了


转载于:https://my.oschina.net/fwe/blog/1600306

实测对比:DeepSeek、豆包、千问三大AI模型生成测试用例谁更强?(附完整代码) 本文通过实测对比了DeepSeek、豆包、千问三大AI模型在生成测试用例方面的表现。文章提供了完整的Python代码实现,详细分析了各模型在用例完整性、准确性、边界覆盖及幻觉控制等维度的差异,并分享了工程化集成与多模型融合等优化策略,旨在帮助测试团队选择合适工具以提升工作效率。 阅读详情

相关推荐

SAP 接口测试操作-业务顾问

业务顾问测试接口操作

weixin_43657667的博客 5158

系列学习 SpringBoot 整合 Mybatis 之第 8 篇 —— 轻松搞定 Mybatis 分页查询(完结)

很多博客或者自学网站都有讲解 mybatis 如何使用,但是往往忽略了如何使用 mybatis 做分页查询。分页查询是开发中一项重要的技能,处理好的话能让开发简化很多,处理不好就要重复造轮子了。 我们先下载之前课程学习的代码:https://pan.baidu.com/s/1Ly7cH3Vq0tCb1cPS32-A_A 提取码:4ntj OK,既然要分页,我们先搞好分页需要的类,为了方便,统一都放在 config 包下创建的 mybatis 包下。 如图,我们依次按顺序创建类:Sear...

流放深圳 1110

Palabos User Guide中文解读 | 第一章 | 介绍

译者的话:本人在学习palabos时,发现国内中文资料甚少,恰好网上可以直接搜到palabos user guide这种英文资料,加之时间充裕,便打算开始翻译,能不能完成全本翻译再说,而且文中我也会标记我不确定的地方,以传达意思为主,翻译不当的地方还请各位读者帮忙指正。 Palabos User Guide Release 1.0 r1 Copyright © 2019 University of...

Yulan Fang's notes. 6977

mybatis3.4.1源代码 - 对 <if>、${} 等标签的擦除

org.apache.ibatis.scripting.xmltags.DynamicSqlSource org.apache.ibatis.scripting.xmltags.TrimSqlNode org.apache.ibatis.scripting.xmltags.IfSqlNode org.apache.ibatis.scripting.xmltags.ForEachSqlNode 。。。。 package cn.java.demo.ibatis.internal.sqlnode; .

~~简~~ 381

Unity 实现动态网格地图生成与交互组件

本文详细介绍了在Unity中实现动态网格地图生成与交互组件的完整方案。从基础网格单元实现到高级交互功能,涵盖网格生成器核心逻辑、事件驱动架构、性能优化技巧以及六边形网格等特殊实现。特别适合游戏开发者学习如何构建战棋、模拟经营类游戏的可交互地图系统,提升开发效率与用户体验。

weixin_29015483的博客 1068

innovus 命令每日精要 | 掌控Innovus布线的利器——setNanoRouteMode详解

在数字IC后端设计的复杂世界里,布线优化是至关重要的一步。今天,我来给大家深入讲解Innovus工具中setNanoRouteMode命令的精妙之处,让你轻松驾驭布线策略,提升设计质量。setNanoRouteMode是Innovus中用于配置NanoRoute绕线行为的关键命令。通过其丰富的参数,你可以精细控制布局后阶段的绕线策略、信号完整性优化、工艺适配及设计规则修复等流程。下面,我将按功能分类总结其核心选项,并针对不同场景给出建议。

weixin_50820814的博客 3528

6)Mybatis启动流程

Mybatis启动流程

jaemy2011的博客 2895

CAN总线错误帧全解析:从数据包到硬件层的故障树分析

本文深入解析CAN总线错误帧的故障树分析方法,从数据包到硬件层全面剖析错误机制。通过物理层信号测试、数据链路层错误解码和应用层协议排查,提供系统化的诊断框架。结合CANoe配置和示波器波形分析,帮助工程师快速定位总线故障,提升系统可靠性。

weixin_26742753的博客 491

mybatis中多个参数并使用foreach遍历集合的问题

mapper接口中的参数定义 xml文件中: 此时还collection中还是list类型的话就会出以下异常: Caused by: org.apache.ibatis.binding.BindingException: Parameter 'list' not found. Available parameters are [a, allid, param1, param2] at org.apache.ibatis.binding.MapperMethod$ParamMap.get(MapperMe

qq_45382855的博客 926

Intel Arc显卡玩《三角洲行动》报错?手把手教你修改注册表跳过验证

本文针对Intel Arc显卡用户在运行《三角洲行动》时遇到的驱动验证报错问题,提供了详细的解决方案。通过安全修改Windows注册表,添加特定键值以跳过游戏驱动兼容性验证,并结合游戏内图形设置与Intel驱动面板的优化建议,旨在帮助玩家顺利进入游戏并提升游戏帧率与运行稳定性。

weixin_29310605的博客 696

架构师成长之路(1)--什么是架构师

前言: 哲学家常思考的问题:" 我是谁?"" 我从哪里来?"" 要到哪里去?不只是哲学家,我想每个人都有自己对这三个问题的认知。 如果我们要成为架构师,我们自己要面临的三大问题: 找准自己定位:我是谁?在哪里? 怎样做好架构师:我要做什么? 如何搭建架构师知识体系:我该怎么做? 这里面就是做事方法论:目标(我要做什么),方法(计划)(我该怎么做), 执行/行动找准自己定位:我是谁?在哪里...

黄规速博客:学如逆水行舟,不进则退 6万+

mybatis foreach多次遍历问题:Error evaluating expression ‘’. Return value () was not iterable.

mybatis foreach多次遍历问题: 使用MyBatis foreach循环的时候出现了个问题,第一次循环使用的变量  第二次再次循环使用的时候  出现了报错   [java] view plain copy print?Caused by: org.apache.ibatis.builder.BuilderException: Error evaluating expression ‘st

Vicco的博客 4万+

【C++PCL】点云文件读写

本文介绍 PCL 中 PCD 与 PLY 点云文件的读取、保存和字段检查,覆盖 PointXYZI、PointXYZRGB、ASCII、二进制及压缩二进制,并给出 C++11 实操代码与参数调试建议。

weixin_45196569的博客 42

mybatis foreach多次遍历问题:Error evaluating expression ‘’. Return value () was not iterable.

报错: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error evaluating expression ‘RNumList’. Return value (R1212340003) was not iterable. 出现这...

海天与晨钟 4220

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

mybatis foreach多次遍历问题:Error evaluating expression ‘’. Return value () was not iterable原因

报错: com.bdos.base.web.module.market.controller.MarketController.deleteComment(MarketController.java:203) MSG: XXXX org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error evaluating expression ‘ids

梦想不会灭 8141

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

MyBatis---xml动态增删思路记录

MyBatis—xml动态增删思路记录 本文仅为作者个人理解,理性参考阅读!!! Foreach标签的使用: 元素 描述 collection 待遍历集合名称 index 索引 item 遍历出的内容,可是对象格式变量值 open 以xx开始 separator 以xx间隔 end 以xx结尾 trim标签的使用 元素 描述 prefix 以xx为前缀 suffixOverrides 以xx间隔 suffix 以xx结尾 trim的元素等同

weixin_44620872的博客 347

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Mybatis——foreach用法

在做mybatis的mapper.xml文件的时候,时常遇到一些需要批量操作的情况,这个时候mybatis的foreach标签就派上用场了。 foreach元素的属性主要有item,index,collection,open,separator,close。 item:集合中元素迭代时的别名,该参数为必选。 index:在list和数组中,index是元素的序号,在map中,index是元素的key,该参数可选 open:foreach代码的开始符号,一般是(和clos...

m0_37965811的博客 4万+

foreach 实现 MyBatis 遍历集合与批量操作数据

一、写在前面 MyBatis 动态 SQL 的一个常用的操作需求是对一个集合进行遍历,通常是在构建 IN 条件语句的时候。foreach允许你指定一个集合,声明可以在元素体内使用的集合项(item)和索引(index)变量。foreach 是动态SQL 中一个非常强大的标签。下面就来体验一下foreach 标签带来的便捷之处,有关批量操作的实现,这里以批量插入数据为例。 二、foreach遍历...

点滴记录 3万+

MyBatis foreach 标签常用方法总结

  在 MyBatis 中,常常会遇到集合类型的参数,虽然我们可以通过 OGNL 表达式来访问集合的某一个元素,但是 OGNL 表达式无法遍历集合。foreach 标签就是专门用来解决这类问题的,foreach 标签可以用来遍历数组、列表和 Map 等集合参数,实现批量操作或一些简单 SQL 操作。  foreach 元素的属性主要有 item,index,open,separator,close,collection。各属性含义如下所示。  集合中元素迭代时的别名,该参数为必选。  在 list 和数组中

长安明月的博客 1万+

关于mybatis中foreach遍历对象

2019-04-18-日常整理-渔得鱼心满意足,樵得樵眼笑眉舒 -----------------------问题及解决------------------------------------- 1.关于mybatis中foreach遍历对象的问题 xml文件: a.情况1-入参对象是list<bean>的: <select id="selectD...

qq_38804767的博客 4226

MyBatis之foreach的用法

MyBatis提供foreach语句实现In查询。foreach语法如下:collection:该属性的对应方法的参数类型可以是List、数组、Map。如果方法的参数类型不属于前三种,则必须和方法参数@Param指定的元素名一致。item: 表示迭代过程中每个元素的别名。可以随便起名,但是必须跟元素中的#{}里面的名称一致。index:表示迭代过程中每次迭代到的位置(下标)open:前缀close:后缀separator:分隔符,表示迭代时每个元素之间以什么分隔。

qq_20236937的博客 1万+
上一篇: Elasticsearch-5.5.0安装head插件
下一篇: Elasticsearch报错:NodeDisconnectedException[[][IP:9300][cluster:monitor/nodes/liveness] disc
chuque4897
博客等级 码龄11年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值