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