Mybatis java.lang.NullPointerException可能的解決辦法
阿新 • • 發佈:2019-02-20
寫在前面
在Spring MVC框架結構中,總是會遇到各種各樣的異常,而Mybatis java.lang.NullPointerException應該算是最常遇到的吧。下面介紹一下我在專案中面對這個異常的解決辦法。
Mybatis java.lang.NullPointerException org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: java.lang.NullPointerException ### The error may involve defaultParameterMap ### The error occurred while setting parameters ### Cause: java.lang.NullPointerException at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:73) at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:360) at com.sun.proxy.$Proxy17.selectList(Unknown Source) at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:183)
步驟一:開通列印SQL語句
因為是通過MyBatis 連線資料庫,所以需要檢視SQL的執行語句
Spring+Mybatis在控制檯輸出SQL的最簡單方法:
在application.properties檔案中新增:
logging.leve.你的Mapper所在的包=debug (如果你的Mapper包在com.demo.mapper就填這個)
步驟二:檢查SQL裡的欄位
- SQL裡的字型要與實體類的成員變數相對應,大小寫也要注意
- 注意區分屬性ResutlMap和ResultType的使用,別混了。
步驟三:檢查資料庫的字元編碼
資料庫、表、欄位的字元編碼都應該統一,最好設定成utf8-general_ci
步驟四:檢查Mapper是否注入成功
@Autowire報錯導致的NullPointerException,雖然報錯,專案執行沒有問題。可是隻有緊挨著@Autowire的一個起作用,下面的都沒有注入成功。這時需要在每一個注入的Mapper中都加上@Autowire。
步驟五:List All elements are null導致NullPointerException
當List物件顯示 All elements are null時,雖然輸入為[null],但是list.size()=1。不管是list==null,list.isEmpty(),list.size()都無法判斷list是否為空。
可以在執行上面語句時,加上list.remove(null)