關於mybatis返回值爲List集合的時候;返回size是1但是獲取該對象時爲null的問題

問題描述

在項目中使用mybatis映射的時候; 返回的結果集是List ;查詢的結果集List的size是1 ; 然而在調用 list.get(0)的時候; 返回值爲 null;

解決方案:

檢查sql裏面的查詢字段; 是否至少有一個字段一定有值; 保證select 後面查詢的某一個字段一定有值;不能select 後面的字段全爲 null;

問題原因分析:

由於 select 的字段值查詢的結果全部爲 null ; 所以到就會導致該對象爲null ; 如下圖所示:
sql代碼:

 SELECT  a ,b  FROM  table  where name= 487

執行結果:
查詢結果然後 mybatis在映射到結果集的時候; 返回的改對象就會爲 null ;

如圖所示;下面截圖是上面sql 通過maybatis映射返回的List裏面的結果;
看到結果;長度爲1;但是所有元素都爲null ;
在這裏插入圖片描述然後調用 get(0)方法自然就會報空指針
在這裏插入圖片描述
分析一下上面的sql ;

首先數據庫肯定是存在這條數據的;否則返回的 histories 這個集合的長度應該是0; 數據庫表 table 裏面確實 存在 name= 487 的數據; 可以查一下數據庫;只是簡單查了這三個字段;
簡單查詢數據確實存在;所以 ;histories 的返回值size 是 1;

由於我們的sql查詢的字段值值剛好都爲 null ; 所以就導致該對象爲 null ;

直接將上面的sql修改一下即可

修改前:
 SELECT  a ,b  FROM  table  where name= 487
 
修改後: [加一個id;因爲id一定存在]
SELECT id , a ,b  FROM  table  where name= 487

在這裏插入圖片描述
這樣再次查詢 histories.get(0) 就不會再報空指針異常了!

所以在我們查詢的時候 ;務必保證有一個字段的值是表中一定存在的;否則就會出現類似的情況!

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