前言
今天遇到一個比較常見的問題,但因爲出錯原因不止一種,所以還是可以總結一下的。
問題描述
當我們使用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裏找,當然是找不到的。