MyBatis報錯分析There is no getter for property named 'XXX' in 'class XXX'

There is no getter for property named 'XXX' in 'class XXX'

前言

  今天遇到一個比較常見的問題,但因爲出錯原因不止一種,所以還是可以總結一下的。

問題描述

  當我們使用Mybatis時可能會經常看到類似這樣的報錯信息There is no getter for property named ‘XXX’ in ‘class XXX’,意思是沒有找到對應字段的getter方法。這個報錯很大可能是在使用動態SQL中的<if>標籤中的test判斷時發生的,因爲這裏判斷非空默認調的是對應字段的Getter方法。

問題分類

  如果在Mapper中我們傳入的參數是自定義對象類型,而屬性‘XXX’是對象的屬性時,一般就是因爲實體類中變量名和Mapper中不一致導致的,這個時候就要檢查是否是變量名拼寫錯誤或是沒有加@Data,@Getter等註解同時又沒有自己添加Getter方法。
  如果傳入的參數是String,或是Integer這一類的且只有一個的時候,不應該使用變量名而應該使用_parameter代替變量名,這是因爲此時如果使用變量名,並不是在你定義的對象裏找Getter方法,而是在String或Integer裏找,當然是找不到的。

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