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

博客主要讲述MyBatis动态SQL语句在xml文件中,调用方法传入基本类型参数(如字符串)时,使用if标签报错的问题。分析原因是系统把参数当成对象提取,解决方案是用“_parameter”替代参数值。若入参为两个,需用“@Param”注解,且xml无需设置parameterType属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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>  

完毕。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋斗鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值