关于报错There is no getter for property named ‘XXX‘ in ‘class java.lang.String‘

只讲重点:
        在进行编写mybatis数据库查询语句代码的时候,dao层参数如果是多个的会加上@Param注解给参数别名。如果参数是单个的话就不需要加注解了(一直以来都是这样写的,并且也没什么问题)。
        然而今天测试代码,本地这么写一点毛病没有,但是发布到线上就出问题了,报错:
nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'quotaId' in 'class java.lang.String'

        如果dao层参数是String类型,并且不想使用@Param注解的话,有两种情况会报错:
1.sql语句使用if进行参数值判

<if test="xxx!= null">
     where id != #{xxx}
</if>

2.sql语句出现参数格式  '${xxx}' 或者 '#{xxx}' 的时候

where id like concat('%','${xxx}','%')

where id like concat('%','#{xxx}','%')

 

注意:如果sql这样写是不会报错的:

where id = #{xxx}

where id like concat('%',#{xxx},'%')

解决办法:
       1.给dao层参数加上@Param注解

(@Param("xxx") String xxx)

         2.使用mybatis默认参数名 _parameter或value

where id like #{_parameter}
where id like concat('%','${value}','%')

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值