mabatis报There is no getter for property named 'user_id' in 'class java.lang.String错误解决办法

背景了解:后台用java写的,ssm框架,前端vue,前端请求后台报以下错误

org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'user_id' in 'class java.lang.String'

大概意思是:在“class java.lang.String”中没有名为“user_id”的属性的getter

错误分析:

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

我代码报错的原因我传递的参数是String类型,在SQL语句中进行判断的时候要把<if>里user_id这个参数改成_parameter 。

相关代码如下:

前端请求代码

			
let url = {
	piedata: 'http://' + http.host_port + '/piedata'
}
//动态渲染饼状图
		fillPieChart() {
			var _this = this;
			let para='';
			para={user_id:JSON.parse(sessionStorage.getItem("user")).id};
			this.$post(url.piedata,para)
				.then(res => {
					if(res != null) {
					} else {
					}
				});
		}

后台controller代码

    //主页饼状图获取数据
    @PostMapping(value = "/piedata")	 
    @ResponseBody
    public JSONArray pieData(@RequestBody Map<String,String> para){
    	JSONArray json = new JSONArray();
    	json = checkRuleService.getPieData(para.get("user_id"));
    	return json;
    }
}

mapper.xml代码

 <select id="getPieData" resultType="CheckRule">
	select sa.app_name app_name,COUNT(*) as count 
	from tb_checkrules r
	left join system_app sa ON r.app_id = sa.id
	where <if test="user_id!=null">user_id=#{user_id}</if>
	group by sa.app_name
 </select>

解决办法:where <if test="user_id!=null">user_id=#{user_id}</if>改成

                  where <if test="_parameter !=null">user_id=#{user_id}</if>

可能还有其他更好的解决办法,欢迎大家留言交流,共同进步

发布了33 篇原创文章 · 获赞 33 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/DengShangYu_/article/details/89853832
今日推荐