天天看點

使用ibatis時Error setting a property: IllegalArgumentException 異常

在使用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;
	}
}