mybatis foreach遍历时item定义的值(item=“a”) 作用范围不仅是在内部 外部其他标签使用#{a}获取时会受到严重影响

笔者在工作遇到一个问题 先上图理解一下:

一句话解释:foreach 中的item定义的值 companyId,作用范围不仅仅是在foreach标签内部,外部也会收到影响。像笔者这种情况,在if标签中的companyId,获取不到传入的参数, 实际上获取的是遍历的集合demandCompanyIds的最后一个值。至于为什么,请参考这篇文章点击打开链接

如图所示,在一个搜索查询的业务中,用户属于多个公司,根据用户id查询出用户所有公司下的数据,并可以根据指定的所选公司筛选出查询的数据,所以在条件判断中和foreach循环遍历中  笔者都是用companyId 获取值公司的Id

结果问题就来了,每次条件筛选的时候,结果都不对,查看sql语句,执行的时候g.company_id总是和筛选的公司id不一致,它的值总是demandCompanyIds的最后一个值。

解决办法就是把item的值修改一下喽,改成任意的 只要外部的标签没有和重复就行。这样的问题真的是坑(sql写的没错啊,值怎么变了?一万个草泥马在奔腾。。。。。。);

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值