专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

no getter for property named ' frch_item_0'的解决

问题描述

mybatis版本:v3.2.7

当批量分页查询数据,传入一个list参数时,通过mybatis的foreach语法处理, mybatis果断给你报错,十分任性!
代码:

<foreach collection="projectIdList" item="item" open="(" separator="," close=")">
     #{item}
</foreach>

异常:

Caused by: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named '__frch_item_0' in 'class xxx'
    at org.apache.ibatis.reflection.Reflector.getGetInvoker(Reflector.java:380) ~[mybatis-3.2.7.jar:3.2.7]
    at org.apache.ibatis.reflection.MetaClass.getGetInvoker(MetaClass.java:170) ~[mybatis-3.2.7.jar:3.2.7]
    at org.apache.ibatis.reflection.wrapper.BeanWrapper.getBeanProperty(BeanWrapper.java:152) ~[mybatis-3.2.7.jar:3.2.7]
    at org.apache.ibatis.reflection.wrapper.BeanWrapper.get(BeanWrapper.java:48) ~[mybatis-3.2.7.jar:3.2.7]

问题解决

可是代码应该没问题啊,别人就是这么写的,为什么就给我报错,难道人善被人欺?
于是研究了一下前人的代码,和自己的‘砖‘做了一下对比,发现,前人也是这么写的,没问题。
只不过前人的projectIdList入参,通过map传递进来的,我直接把list搞进来了,然后mybatis就死给我看了!!!
so,解决方案就是把这个list也让map包装了一下,然后再传进来,问题解决!!!

原因猜测

因为项目的原因,没有时间深挖原因,不过猜测可能是因为mybatis不支持list或优化的不好导致的,如果哪位大神了解,随时欢迎指正!

其他方式

其实对于这个问题,也百度了一下,发现网上的解决办法都是

<foreach collection="projectIdList" item="item" open="(" separator="," close=")">
     '${item}'
</foreach>

不用细看了,就是把# 改成 $ 并加引号。
这个有着明显的注入风险,果断弃用了。
况且,如果要用这种方式,我为啥还用foreach,直接

in ( ${projectIdStr} )

不就ok了?(当然,这里的id已经处理为逗号连接形式了)

文章永久链接:https://tech.souyunku.com/25054

未经允许不得转载:搜云库技术团队 » no getter for property named ' frch_item_0'的解决

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们