int不可爲null引發的 MyBatis做持久層框架,返回值類型要爲Integer問題

MyBatis做持久層框架,返回值類型要爲Integer

MyBatis 做持久層時,之前沒注意,有時候爲了偷懶使用了int類型做爲返回的類型,這樣是不可取的,MyBatis做持久層框架,返回值類型要爲Integer

今天在使用的時候發現一個java基礎類型的重要問題,

int類型不能與null比較,即int不能賦值爲null(這在C語言中是可以存在的),在數據的操作時常出現空的情況,問題就嚴肅了

這衍生出一個問題,使用MyBatis作爲持久層框架的情況,若返回值是空將發生什麼?

項目中用mybatis3.x,用sql查詢某個表類型爲int的字段,那個表是空表,沒有數據,結果拋異常,原因是在對象中的屬性爲int,空表時,sql查詢出來的是NULL,結果賦值時拋異常了。
org.apache.ibatis.binding.BindingException: Mapper method ‘getSort’ (xx.yy.cc.DxxDAO) attempted to return null from a method with a primitive return type (int).
拋這樣的異常
自然拋出的異常我們是沒辦法操作的(你非要try-catch也不是不能,但是很麻煩),所以得出結論MyBatis做持久層框架,返回值類型要爲Integer

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