Mbatis返回list.size>0,但list.get(0) 空指針異常

錯誤提示,空指針異常

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
java.lang.NullPointerException: null

解決方案:

  1. 檢查xxxmapper.xml下數據庫映射是否正確(主要是變量是否一致,不要缺)
    1.2 如果變量一致,檢查映射字段,是否變量名寫錯,導致映射失敗
  2. 檢查表中是否設置主鍵,查看需要獲取數據是否爲空值,爲空,補全.運行正常

問題原因:
1.打斷點,發現mapper方法執行成功,但是userActivities.get(0).getActivityId()報空指針異常,猜測list對象爲空或者數據庫字段爲空

        List<UserActivity> userActivities = userActivityMapper.findbyUserActivity(userActivityQueryDTO);

        System.out.println(userActivities.get(0).getActivityId());

檢查之後發現,數據庫數據正常,那問題應該就是sql語句返回類型出了問題

2.檢查xxxxmapper.xml中數據返回類型

<select id="findbyUserActivity" parameterType="pbad..dto.QueryDTO.UserActivityQueryDTO" resultType="pbad.Model.UserActivity">

返回類型爲UserActivity

public class UserActivity {
    private Long activityId;
    private Long userId;
}

數據庫變量
在這裏插入圖片描述
才因爲之前寫insert的時候數據庫設置了主鍵id,沒有及時更正,導致sql返回數據類型爲UserActivity的時候找到數據,先將size增加後,再返回對象,但是因爲映射的原因,導致返回對象爲null,所以我們增添一下id字段就可以了

public class UserActivity {
    private int id;
    private Long activityId;
    private Long userId;
}

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