java mybatis 關於中向資料庫中插入資料時,報錯java.lang.NullPointerException的問題
阿新 • • 發佈:2019-01-02
今天在實現向MySQL的資料庫insert一個Object資料時出現一個錯誤;
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException:
### Error updating database. Cause: java.lang.NullPointerException
### Cause: java.lang.NullPointerException
at org.mybatis.spring.MyBatisExceptionTranslator .translateExceptionIfPossible(MyBatisExceptionTranslator.java:73)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:364)
at com.sun.proxy.$Proxy31.update(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:250 )
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:54)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:52)
....
Caused by: java.lang.NullPointerException
at com.autozi.o2o.wxby.db.user.entity.party.getLzfqAuthPlus(party.java:127)
at sun.reflect.NativeMethodAccessorImpl .invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
報錯資訊中,可以看出,在service執行insert操作時,還沒有執行sql語句就報了一個 NullPointerException異常。
繼續看錯誤,發現是 getLzfqAuthPlus時報的空指標,說明程式在執行insert操作時,需要先取javabean中的資料,然後出現的空指標異常,就是bean實體中
的getLzfqAuthPlus是空指標。
各種百度。。。
最後在實體類看出了問題,我在宣告這個LzfqAuthPlus屬性時,使用的Integer物件,而再使用get和set方法是int型別!
解析:
我在更新操作時,建立LzfqAuthPlus值為空存入bean物件,其他屬性都有值,只有LzfqAuthPlus為空。
1、本身LzfqAuthPlus屬性為一個Integer物件,而我get方法是獲取一個int的基本資料型別,這是型別不匹配,導致的空指標異常。
2、如果LzfqAuthPlus的屬性也為基本型別int時,此時就不會報空指標異常。
3、一般來說,在構建實體類時,直接利用軟體生成get和set方法就不會有問題,本人的錯誤是因為我中途修改了LzfqAuthPlus的屬性,而忘了修改get和set的獲取資料型別。
結論:
在實體類中,最好都是使用包裝類,這樣可以減少錯誤的發生。