mybatis的疑问?

最忙碌的语言
  • 81

mapper是这么写的:
public List<0bject> selectById(Integer id);

xml是这么写的:
<select id="selectById" paramterType="Integer" resultMap="">
select * from aa
<where>

 <if test="replyId != null and replyId != '' ">
   and replyId = #{id} </if>

</where>
</select>

报错信息:org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'reply'

但是如果我把xml改了,就正常了,不知道为啥???谢谢
<select id="selectById" paramterType="Integer" resultMap="">
select * from aa
where replyId = #{id}
</select>

回复
阅读 424
3 个回答
<if test="replyId != null and replyId != '' ">

这个if判断会调用传入参数对象的getReplyId方法获取replyId的值, 你paramterType传入的Integer类型很显然没有getReplyId这个方法, 所以会报错

<if test="replyId != null and replyId != '' ">
and replyId = #{id} </if>
这是什么骚玩法?

no getter for property named 'reply',就是说没有get方法来获取reply这个属性,也就是你xml中应该有#{reply}或${reply}这养的东西,而且你入参是个integer id,我很好奇这个reply是怎么来的。

<if test="replyId != null and replyId != '' ">

这句话中的replyId必须是你入参有这个才行,你入参只有给int id,所以报错也应该是no getter for property named 'replyId'吧。

你知道吗?

宣传栏