mybatis报错 There is no getter for property named 'xx' in 'class java.lang.String

今天在写代码的时候突然遇到这等怪事,用了<if>或者<when>之类的判断语句,就导致报错:

 There is no getter for property named 'xx' in 'class java.lang.String

不明白到底怎么回事,去网上找到有人的解决方案是:

发现不能将参数设为bean里的名称,如果传入类型为String类型,则参数需统一修改为[_parameter],修改后的sql语句如下(不管你的参数是什么,都要改成"_parameter")

<select id="selectCategoryList" parametertype="java.lang.String" resulttype="MstCategoryBean">
SELECT
category_id AS categoryId,
category_name AS categoryName,
view_orderby AS viewOrderby
FROM
mst_category
WHERE
del_flg =0

and
parent_category_id = #{_parameter}

</select>

当然也有人分析原因,是if或when标签是针对JAVABEAN或者MAP的,String不能用标签,因此建议去掉if或when标签,但也是不可行的。

上面改成_parameter的做法,我虽然没尝试,但发现其他网友也遇到了除String的,如Integer的相同的问题:

There is no getter for property named 'id' in 'class java.lang.Integer

这样估计就上述方法就不可以了吧,我暂时没试。

不过我的方法是在Mapper接口的方法参数上使用@Param注解指定具体的参数名:

package com.xxxx.xxx.mapper;
@MapperScan
public interface XxxxMapper{
   public void selectUser(
@Param("userName")String userName);
}

<select id="selectUser" resulttype="xxx.xxx.xxx.User">
SELECT
user_id AS userId,
user_name AS userName,
user_orderby AS userOrderby
FROM
t_user
WHERE
del_flg =0

<if test="userName!=null  and userName!=''">
and
user_name = #{userName}
</if>
</select>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值