文档章节

Mybatis There is no getter for property named 'X'

秋风醉了
 秋风醉了
发布于 2015/07/04 23:34
字数 393
阅读 3004
收藏 3

在尝试使用mybatis的动态sql中遇到这么一个问题,

使用Mybatis查询时,其参数可以是基本数据类型或者像Integer和String这样的简单的数据对象,也可以是复杂对象(一般是指JavaBean)或者map等,当使用基本数据类型的参数时,若这个参数的使用放在了判断条件中,

<!-- mybatis 动态sql-->
<select id="findFruit" resultType="Fruit">
    SELECT * FROM tb_fruit
    WHERE name = 'helloworld'
    <if test="tyep != null">
        AND type = #{tyep }
    </if>
</select>

查询,

@Test
public void test8837() throws SQLException {
    SqlSession sqlSession = sqlSessionFactory.openSession();
    sqlSession.getConnection().setAutoCommit(true); //设置事务的自动提交
    List<Fruit> fruits = sqlSession.selectList(
        "com.usoft.mapper.FruitMapper.findFruit", null);
    List<Fruit> fruits2 = sqlSession.selectList(
        "com.usoft.mapper.FruitMapper.findFruit", 1);
    System.out.println(fruits.size());
    System.out.println(fruits2.size());
    sqlSession.close();
}

则会报如下错误,

org.apache.ibatis.exceptions.PersistenceException: 

### Error querying database.  Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'tyep' in 'class java.lang.Integer'

### Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'tyep' in 'class java.lang.Integer'

就是说 Integer 类中没有type这个属性,是啊 ,Integer 中本来就没有type这个属性啊,其实是,在mybatis中,采用ONGL解析参数,所以会自动采用对象树的形式获取传入的变量值。这里传入参数的类型为 int ,其自动装箱为Integer,获取type参数的值时,其实获取的就是Integer的type属性值。所以这样的写法是不对的。

应该改成如下,

<!-- mybatis 动态sql-->
<select id="findFruit" resultType="Fruit">
    SELECT * FROM tb_fruit
    WHERE name = 'helloworld'
    <if test="_parameter != null">
        AND type = #{_parameter}
    </if>
</select>

这里的 _parameter 表明这个参数的类型为基本类型或基本类型的封装类型。

================END================

© 著作权归作者所有

秋风醉了
粉丝 247
博文 542
码字总数 412294
作品 0
朝阳
程序员
私信 提问
加载中

评论(3)

雷诺阿
雷诺阿
我是导包导错了,自动导包导成Spring Data的Param了,应该用ibatis的Param
秋风醉了
秋风醉了

引用来自“番茄酱汁”的评论

拜托 属性的方法没有getter setter
Integer 类 当然没有 type的getter 和 setter啊 。。
番茄酱汁
番茄酱汁
拜托 属性的方法没有getter setter
ybatis问题:There is no getter for property named 'unitId' in 'class java.lang.String'

Mybatis遇到的问题 问题: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named '......

时刻在奔跑
04/04
0
0
There is no getter for property named '__frch_status_0' in

定义了一个javabean,当做一个参数传入mybatis中 javabean: import java.util.Date;import java.util.List;public class BidCondition extends BaseCondition { 一大串get/set方法 } 使用其中......

宿小帅
2016/10/27
160
0
Mybatyis foreache 中的BUG

标签在Mybatis的xml配置中使用集合,主要是用到了foreach动态语句。 foreach的参数: foreach元素的属性主要有 item,index,collection,open,separator,close。 item表示集合中每一个元素...

ahpome
2018/10/26
0
0
mybatis整合Spring项目,报There is no getter for property named '***' in 'class java.lang.String错误

mybatis整合Spring项目,报There is no getter for property named '***' in 'class java.lang.String错误 因为mybatis版本的问题,有些传入参数不支持直接设置bean的名称,如果parameterTy......

Ethel_oo
2017/09/06
0
0
mybatis There is no getter for property named ""

mybatis UserDao.java代码如下: package soc.dao; import java.util.List;import java.util.Map; import org.apache.ibatis.annotations.Param;import org.apache.ibatis.annotations.Selec......

liuhuics10
2016/03/02
179
0

没有更多内容

加载失败,请刷新页面

加载更多

JWT学习总结

官方 https://jwt.io 英文原版 https://www.ietf.org/rfc/rfc7519.txt 或 https://tools.ietf.org/html/rfc7519 中文翻译 https://www.jianshu.com/p/10f5161dd9df 1. 概述 JSON Web Token(......

冷基
40分钟前
3
0
AOP的学习(1)

AOP 理解AOP编程思想(面向方法、面向切面) spring AOP的概念 方面 -- 功能 目标 -- 原有方法 通知 -- 对原有方法增强的方法 连接点 -- 可以用来连接通知的地方(方法) 切入点 -- 将用来插入...

太猪-YJ
今天
4
0
一张图看懂亮度、明度、光度、光亮度、明亮度

亮度、明度、光亮度,Luminance和Brightness、lightness其实都是一个意思,只是起名字太难了。 提出一个颜色模型后,由于明度的取值与别人的不同,为了表示区别所以就另想一个词而已。 因此在...

linsk1998
昨天
8
0
Python应用:python链表示例

前言 python链表应用源码示例,需要用到python os模块方法、函数和类的应用。 首先,先简单的来了解下什么是链表?链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是...

python小白1
昨天
4
0
Source Insight加载源码

Source Insight是一个图形化的源代码查看工具(当然也可以作为编译工具)。如果一个项目的源代码较多,此工具可以很方便地查找到源代码自建的依赖关系。 1.创建工程 下图为Snort源代码的文件...

天王盖地虎626
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部