首页 > 技术文章 > MyBatis if test 传入一个数字进行比较报错 There is no getter for property named 'userState' in 'class java.lang.Integer'

ldl326308 2018-12-28 15:24 原文

  在写MyBatis映射文件中,我要传入一个 int 类型的参数,在映射文件中用 'test' 中进行比较,我花了很长时间百度,发现都是不靠谱的方法,有把数字在比较时转成字符串用 equals 比较的....... ,写在映射文件中完全没用,实在没办法了,找我的牛老师 ^v^ 解决一下,后来在 映射文件的对应接口的方法的参数前加注解 @Param 就解决了这个困扰了我很久的问题,解释是:如果要把传入的参数在 ‘test’ 中比较,参数前加上注解 @Param('参数名') ,如果不加注解,它将在比较时,用参数调用get方法获得值,因为不是对象,所以也就报错了,我之前是用实体类包数据包装在进行传入比较的。。。。。还是记住这个坑吧。。。。。

接口代码

List<User> selectByUserState(@Param("userState") int userState);

映射文件:

    <select id="selectByUserState" parameterType="Integer" resultType="com.nf.lc.entity.User">
        select * from user
        <where>
            <if test="userState == 1 or userState == 0">
                user_state = #{userState}
            </if>
        </where>
    </select>

 

 

 

希望你看到这篇博客能解决这个问题。

 

 

学无止境(LC)

 

推荐阅读