`
samwalt
  • 浏览: 280860 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

org.apache.ibatis.reflection.ReflectionException: There is no getter for propert

    博客分类:
  • java
 
阅读更多
在使用mybatis的模糊查询的时候,需要从jsp传入到controller中一个keyword【String】,在mapper.xml中我是这样写的

    <select id="fuzzyFind" resultMap="articleResultMap" parameterType="string">  
        <![CDATA[ 
            SELECT * FROM articles WHERE 1=1 
        ]]>  
        <if test="keyword != null">  
            <![CDATA[ AND article_title LIKE CONCAT('%','${keyword}','%') ]]>  
        </if>  
    </select>  


然后用junit测试的时候,后台报了org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'keyword' in 'class java.lang.String'这样的一个错误,说keyword这个属性没有getter方法,然而我这个keyword不是javabean,没有必要为其设置getter方法,那怎么办呢?我在网上看到了这样的几种解决方法:

1. 将string类型换成map类型的,然后将该keyword 放入该map中,不会报错

2. 在接口中使用@Param(value="xxx") String xxx, 例如:public List<ArticleEntity> fuzzyFind(@Param(value = "keyword") String keyword);  也可以解决问题, 但是我这样写还是出现了同样的错误

3. 在配置文件中直接将keyword换成_parameter,问题解决。
    <select id="fuzzyFind" resultMap="articleResultMap" parameterType="string">  
        <![CDATA[ 
            SELECT * FROM articles WHERE 1=1 
        ]]>  
        <if test="_parameter != null">  
            <![CDATA[ AND article_title LIKE CONCAT('%','${_parameter}','%') ]]>  
        </if>  
    </select>  
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics