昨天运行公司项目的一个模块时,后台报了一个错:

Caused by: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'id' in 'class java.lang.String'

一看是某个属性没有get方法,可是再一看不对劲啊,java.lang.String,大概意思是String类中属性为id的getter,怎么id属性成String类中的了???

看下查询语句:

<select id="get" resultType="Target" >
SELECT 
FROM sp_target a
<where>
<if test="id != null and id !=''">
and a.id = #{id}
</if>
</where>

</select>

SELECT 后面没有字段,我删除了,不影响我们讨论的问题。这个查询只传入了一个参数,是String类型的,并且where标签中增加了一个if test的判空,其实问题就是在这里,当我们传入一个String对象参数,Mybatis会把id当做String对象的一个属性,这很显然是有问题的,String不是我们定义的类。说白了,Mybatis认为id是String类的一个属性,但String中并没有id这个属性。

两种解决方法:

一、if test中的id用_parameter替换,而实际的语句不需要修改and a.id = #{id},因为Mybatis当只传入一个参数时#{ } 中的内容没有要求。

二、在Mapper中给出入参设置名称,例:public ... getById(@Param("id") String id);这样修改后我们前面的写法就不会报错了。

额外一种解决方法:

如果该字段必定不为空的话,可以不使用if标签,这样and a.id = #{id} 这样的写法也不会报错。

希望能帮助到大家,如有问题,请指出,不胜荣幸...

Mybatis报错There is no getter for property named 'id' in 'class java.lang.String'相关推荐

  1. Mybatis问题:There is no getter for property named 'unitId' in 'class java.lang.String'

    Mybatis遇到的问题 问题: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.re ...

  2. mybaits错误解决:There is no getter for property named 'parentId ' in class 'java.lang.String'

    在使用mybaitis传参数的时候,如果仅传入一个类型为String的参数,那么在 xml文件中应该使用_parameter来代替参数名. 比如mapper中如下方法,只有一个String值 publ ...

  3. mybatis报错There is no getter for property named '***' in 'class ***'

    mybatis报错There is no getter for property named '***' in 'class ***', 检查一看是xml中映射字段拼写错误,大小写. 有的时候用插件生 ...

  4. mybatis传单个参数报错:There is no getter for property named 'user_id' in 'class java.lang.String

    org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'user_id' in ...

  5. SSM框架报错分析(一)——There is no getter for property named 'XXX' in 'class java.lang.String'...

    一.发现问题<select id="queryStudentByNum" resultType="student" parameterType=" ...

  6. Mybatis中传参包There is no getter for property named XXX in class java.lang.String

    一.发现问题 <select id="queryStudentByNum" resultType="student" parameterType=&quo ...

  7. mybatis There is no getter for property named 'xx' in 'class java.lang.String

    用mybatis查询时,传入一个字符串传参数,且进行判断时,会报 Java代码   There is no getter for property named 'moduleCode' in 'cla ...

  8. Mybatis异常There is no getter for property named ‘XXX‘ in ‘class java.lang.String‘

    Mybatis异常There is no getter for property named 'XXX' in 'class java.lang.String' 参考文章: (1)Mybatis异常T ...

  9. MyBatis3: There is no getter for property named 'code' in 'class java.lang.String'

    mybatis3  : mysql文如下,传入参数为string类型时'preCode',运行报错为:There is no getter for property named 'preCode' i ...

最新文章

  1. Java解决百马百担问题
  2. 分享:Orthanc 0.4.0 发布,DICOM 服务器
  3. java 基础(匿名内部类)
  4. webpack项目代理异常解决
  5. 只需 5 分钟看完这篇 HTTPS,去阿里面试和面试官扯皮就没问题了!
  6. video.js android,VideoJS + HTML5自动播放失败,适用于Android 2.3+和IOS 4+
  7. java sdk下载_Java Sdk下载 | 保利威帮助中心
  8. 集合框架(九)----Map
  9. Spring4.x(7)---对象的生命周期方法
  10. 荣耀9X/9X Pro外观谍照曝光:屏幕设计竟大不相同
  11. 液态渐变背景纹理,选择一个新潮的背景,为你的设计加分!
  12. 计算机常用维护知识,电脑怎么维护?电脑日常维护小常识
  13. python 读取鼠标选中文本_python怎么读取文本文件
  14. Spring-扫描/jar/读取Classpath下的文件资源
  15. 评分卡模型开发(八)--主标尺设计及模型验证
  16. 物联网技术对于智慧生活24小时改变
  17. 【CF1312D】Count the Arrays(计数)
  18. TeamTalk服务器编译与部署
  19. 查看Win7电脑密钥期限
  20. Python机器学习应用之监督学习-上证指数涨跌预测实例

热门文章

  1. DDOS防护——中国互联网企业的“出海之盾”
  2. Flink CDC 2.x 让一切变得美好
  3. ADB 模拟触摸和按键
  4. SqlServer 删除表数据
  5. 目前最好的python教程_椒目_椒目的功效与作用 - 中药查询
  6. PLC FBD控制软件
  7. 以后坚决不养会冬眠的动物叻。。
  8. android远程定位此设备,基于Android的远程定位显示研究与实现
  9. 基于工科科研组会经常被大BOSS批评之改革计划
  10. 备份硬件驱动--驱动精灵的使用