- 在映射文件中写了这样的一条sql
<select id="selectUserById" parameter="int" resultType="User">
select * from user
<if test="id != 0">
id = #{id}
</if>
</select>
这条sql运行后会抛出一个There is no getter for property named "id" in "class java.lang.Integer"
这样的错误
原因: mybatis默认使用ongl解析参数,在这里就变成了使用 "java.lang.Integer.id"进行取值,而这里的id是User类所以就抛出了异常
解决方案:
1.将
#{id}
替换为#{_paramter}
<select id="selectUserById" parameter="int" resultType="User"> select * from user <if test="id != 0"> id = #{_parameter} </if> </select>
- 在方法中提前声明
public void methodName(@Param(value ="id") int id,@Param(value="username") String username);
- 将
parameterType="int"
转为parameterType="User"
将id的取值顺序重新转到User.id
中即可