Mybati的if标签报错:There is no getter for property named ‘CID‘ in ‘class java.lang.String‘

本文转载自以下文章
Mybati的if标签报错:There is no getter for property named ‘CID’ in ‘class java.lang.String’

https://blog.youkuaiyun.com/quan278905570/article/details/95948614

----正文开始----

mybatis的l动态sql语句xml文件中,若调用方法传入的不是实体对象类型,而是基本类型如字符串参数,在使用if标签时报错:
There is no getter for property named ‘CID’ in ‘class java.lang.String’
在这里插入图片描述
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>  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值