There is no getter for property named 'expertGoodAtId' in 'class java.lang.Long'

问题:用mybatis查询时传入一个Long参数且进行判断时报:There is no getter for property named 'expertGoodAtId' in 'class java.lang.Long'

原始xml文件:

<pre name="code" class="html"><!-- App专家接口查询:根据搜索条件查询,按专家id分组,按专家分数倒叙排序 -->
	<select id="expertByScoreOrderQuery"  parameterType="java.lang.Long" resultType="java.util.Map">
		select ex.id,ex.expert_name AS expertName,ex.phone,ex.header_url AS headerUrl,ex.longitude,ex.latitude,ee.score,
                GROUP_CONCAT(vm.models_name)AS expertGoodAt
		from ykat_expert ex
		LEFT JOIN ykat_expert_evaluate ee ON ex.id=ee.expert_id
		LEFT JOIN ykat_expert_models em ON ee.expert_id=em.expert_id
		LEFT JOIN ykat_vehicle_models vm ON em.vehicle_models_id=vm.id
		where 1=1 and ex.is_del=1
		<if test="expertGoodAtId!=null and expertGoodAtId!='' ">
			and vm.id=#{expertGoodAtId}
		</if>
		GROUP BY ex.id
		ORDER BY ee.score desc
	</select>

 

解决方法:

方法一:无论什么参数均使用“_parameter

<!-- App专家接口查询:根据搜索条件查询,按专家id分组,按专家分数倒叙排序 -->
	<select id="expertByScoreOrderQuery"  parameterType="java.lang.Long" resultType="java.util.Map">
		select ex.id,ex.expert_name AS expertName,ex.phone,ex.header_url AS headerUrl,ex.longitude,ex.latitude,ee.score,
                GROUP_CONCAT(vm.models_name)AS expertGoodAt
		from ykat_expert ex
		LEFT JOIN ykat_expert_evaluate ee ON ex.id=ee.expert_id
		LEFT JOIN ykat_expert_models em ON ee.expert_id=em.expert_id
		LEFT JOIN ykat_vehicle_models vm ON em.vehicle_models_id=vm.id
		where 1=1 and ex.is_del=1
		<if test="_parameter!=null and _parameter!='' ">
			and vm.id=#{expertGoodAtId}
		</if>
		GROUP BY ex.id
		ORDER BY ee.score desc
	</select>
方法二:dao接口参数添加注释,说明是对应哪个参数名(实际开发中常用方法)

     /**
     * @descript:App查询专家:根据查询条件,按专家分数倒叙排序
     * @param expertGoodAtId 专家擅长车辆id
     * @return
     */
     List<Map<String, Object>> expertByScoreOrderQuery(@Param(value="expertGoodAtId")Long expertGoodAtId);

原因分析

Mybatis默认采用ONGL解析参数,所以会自动采用对象树的形式取long.num值引起报错

备注:

1:mybaties中注解value可以省略不写如@Param("expertGoodAtId")与@Param(value="expertGoodAtId")是一个意思

2: GROUP_CONCAT(vm.models_name)是mysql对查询2条相同数据合并成一行显示,并且必须根据某个字段分组,统计时使用distinct排除重复数据





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值