在使用ibatis做資料通路層時,有時會出現Error setting a property: IllegalArgumentException 異常,
該異常出現的一個原因是因為資料庫中有null字段,尤其是非字元串字段,比如int類型,ibatis會使用Domain對象的set方法将資料庫拿出來的值賦給Domain對象的屬性,Domain對象屬性為int時,将資料庫中拿出的null指派給int就會抛出這種錯誤,解決辦法:
1. 将資料庫類似int類型的字段賦上一個預設值,比如說0等。(當然不影響業務邏輯)
2. 将Domain對象的屬性int等改為對應的裝箱類型,比如Integer等,因為Integer可以為null,是以可以指派。
3. 如果屬性實在不想使用裝箱類型,我們知道ibatis是依靠Domain的set方法進行指派,是以可以改寫set方法,比如:
public void setYear(Integer year) {
if (year != null) {
this.year = year;
}
}