mybatis中There is no gettter for property named ‘xxx‘ in ‘class java.lang.Long‘异常

一般在mybatis中遇到这个问题,首先按报错提示看实体类是否缺少getter(一般很少出现),接着考虑是不是SQL中字段与实体类中的字段拼写不同,其次考虑是不是传多个参数,且没有添加@param("")的参数

错误再现

Dao层接口

    List<InvestigationalSiteEntity> getInvestigationalSiteListByDdcId(@Param("ddcId") Long ddcId,@Param("related") Integer related);

mybatis中的SQL

 select t.*
        from investigational_site t
        left join ddc_investigational_site t1
        on t.Investigational_site_id = t1.Investigational_site_id
        where  t1.ddc_id = #{ddcId}
        <if test="related!= null">
            and t.related =#{related,jdbcType=INTEGER}
        </if>

问题出现的很突然,原以为只是拼接或者没有加注解,但是检查以后发现都没有问题,然后网上找资料看有一种答案是动态SQL中<if test=“xxx != null " > 改成<if test=”_parameter != null " >,然后用这种方式试,发现还是报错,这就很难受了,然后我把该接口和SQL中的报错的字段去除掉发现,发现还是报同样的错,最后我把每一个xml中用到该字段且带if标签的SQL都看了一遍(不包括对象中带有属性字段的SQL),然后都改成了“_parameter”,最终问题解决了。

正确的SQL

 select t.*
        from investigational_site t
        left join ddc_investigational_site t1
        on t.Investigational_site_id = t1.Investigational_site_id
        where  t1.ddc_id = #{ddcId}
		<if test="_parameter != null">
            and t.related =#{related,jdbcType=INTEGER}
        </if>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值