Mybati的if标签报错:There is no getter for property named 'CID' in 'class java.lang.String'
  gHNnXvJyAvTS 2023年11月02日 37 0


mybatis的l动态sql语句xml文件中,若调用方法传入的不是实体对象类型,而是基本类型如字符串参数,在使用if标签时报错:

There is no getter for property named ‘CID’ in ‘class java.lang.String’

Mybati的if标签报错:There is no getter for property named


xml文件内容如下

<select id="getUserByID2" parameterType="string" resultMap="mapUser2">
select u.*,a.* from feeCDataUser u,FeeArea a
where u.AreaID=a.AreaID
<if test="CID !=null">
and CID = #{CID}
</if>
</select>

原因分析:此提示CID没有提取方法,说明系统把参数当成对象来提取。
解决方案:传入参数如果不是实体对象类型,需使用“_parameter”来替代参数值。修改后xml如下:

<select id="getUserByID2" parameterType="string" resultMap="mapUser2">
select u.*,a.* from feeCDataUser u,FeeArea a
where u.AreaID=a.AreaID
<if test="_parameter !=null">
and CID = #{_parameter}
</if>
</select>

结果:运行正常。

如果入参是两个的时候,就要使用mybatis的注解“@Param”。在定义方法的时候使用方式如下:

public User getUserByID2(@Param("CID") String CID,@Param("AreaID") String AreaID);

此时,xml里面已经不需要parameterType属性设置了。xml内容改为:

<select id="getUserByID2"  resultMap="mapUser2">
select u.*,a.* from feeCDataUser u,FeeArea a
where u.AreaID=a.AreaID
<if test="CID !=null">
and CID = #{CID}
</if>
<if test="AreaID !=null">
and u.AreaID = #{AreaID}
</if>
</select>

完毕。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  WaYJTbj6RMqU   2023年11月02日   307   0   0 XMLhdfsHadoop
gHNnXvJyAvTS