今天在修改一個關於mybtis語句時,偶然發現的一個錯誤 There is no getter for property named 'id' in class 'java.lang.String', 糾結了許久,終於明白了為什麼。 原因:Mybatis預設採用ONGL解析參數,所以會自動採用對象樹 ...
今天在修改一個關於mybtis語句時,偶然發現的一個錯誤 There is no getter for property named 'id' in class 'java.lang.String', 糾結了許久,終於明白了為什麼。
原因:Mybatis預設採用ONGL解析參數,所以會自動採用對象樹的形式取 string.xxx 值,如果沒在在方法中定義,則會拋異常報錯。當然也不是所有的版本會有這個問題,我的項目用的版本比較老。
有兩種解決方案:
方案一: 將對應的參數用 _parameter 的一個參數替代,在執行SQL語句的時候就相當預編譯,此時並不是實際賦值,相當於占位符,這樣就不會發生這樣的錯誤,直接上圖:
將mapper中的方法參數用 _parameter來依次替代,也就是上圖中畫紅色線部分。
方法二
在mapper.dao 文件中介面類文件中的方法參數預先定義,給參數加上@Param("id") 類似的註解也能解決這個問題,但需要導入相應的註解包和開啟掃描註解
public Object getObjById(@Param("id")String id);