1、问题背景
在使用mybatis查询时,报错There is no getter for property named ‘XXX’ in ‘class java.lang.String’ 错误
具体接口如下:
Page<User> findUserList(String queryString);
<select id="findUserList" parameterType="string" resultType="com.co.pojo.User">
select * from t_user
<if test="queryString != null">
where code = #{queryString} or name = #{queryString}
</if>
</select>
接口中我们定义了findUserList(String queryString),形参的名称为queryString。按理来说在sql里就用#{queryString}去获取。
2、原因
但是,不是这样的,这里的”参数名”可以是任意的。
因为JAVA反射只能获取方法参数的类型,但无从得知方法参数的名字的
3、解决方案
因此mybatis考虑到这点,提供了@param注解,我们只需在接口的方法参数前加上param注解就好了,如下:
Page<User> findUserList(@Param("queryString") String queryString);