Mybatis中selectOne的空指針異常

selectOne調用了selectList方法,當selectList方法返回值的size小於1 的時候,selectOne方法會返回null值。我們再來看一下mybatis的xml. 

如果你寫了resultType爲Integer,然後在業務代碼中很自然的用一個變量int去接當前這個方法的返回值:

int id = dao.methodName(param);如果按照你傳入的條件在數據庫中沒有找到相關的值,此時selectOne方法的返回值會是一個null,當你使用Java的自動拆箱機制的時候會報出一個無情的NPE。

原因:Java在自動拆箱的時候會調用Integer類中的intValue方法,如果當前對象爲null,則拋出NPE。

所以我們在使用mybatis的這個selectOne方法的時候一定要多加小心。不要踩到坑裏。

怎麼破: 用一個Integer去接一次返回值,然後判斷是否爲空,然後再進行具體的業務邏輯處理。但是!但是!但是!如果把resultType寫成int,呵呵,恐怕無解了。

發佈了43 篇原創文章 · 獲贊 6 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章