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”中没...
背景了解:后台用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>
可能还有其他更好的解决办法,欢迎大家留言交流,共同进步
更多推荐
所有评论(0)