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>

 

可能還有其他更好的解決辦法,歡迎大家留言交流,共同進步

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章