1. 程式人生 > >java mybatis 關於中向資料庫中插入資料時,報錯java.lang.NullPointerException的問題

java mybatis 關於中向資料庫中插入資料時,報錯java.lang.NullPointerException的問題

今天在實現向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的獲取資料型別。

結論:
在實體類中,最好都是使用包裝類,這樣可以減少錯誤的發生。