關於pojo中字段全部爲包裝類型

阿里巴巴JAVA開發手冊中寫道:

  1. 關於基本數據類型與包裝數據類型的使用標準如下:
    1) 【強制】所有的 POJO 類屬性必須使用包裝數據類型。
    2) 【強制】RPC 方法的返回值和參數必須使用包裝數據類型。
    3) 【推薦】所有的局部變量使用基本數據類型。
    說明:POJO 類屬性沒有初值是提醒使用者在需要使用時,必須自己顯式地進行賦值,任何
    NPE 問題,或者入庫檢查,都由使用者來保證。
    正例:數據庫的查詢結果可能是 null,因爲自動拆箱,用基本數據類型接收有 NPE 風險。
    反例:比如顯示成交總額漲跌情況,即正負 x%,x 爲基本數據類型,調用的 RPC 服務,調用
    不成功時,返回的是默認值,頁面顯示爲 0%,這是不合理的,應該顯示成中劃線。所以包裝
    數據類型的 null 值,能夠表示額外的信息,如:遠程調用失敗,異常退出。

測試用例:

pojo:

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Test {
    private Integer id;
    private String name;
    private Integer age;
    private int num;
}

service:

public void selTest(){
   Test t = (Test) testMapper.selectById(1);
    System.out.println(t.getAge());//Integer
    System.out.println(t.getNum());//int

}

數據庫:
在這裏插入圖片描述
其餘簡單代碼不再展示。

請求service
測試結果:
在這裏插入圖片描述

這裏由於num字段是int類型,所以即使從數據庫中查出的數據爲Null,但是由於自動拆箱,int類型數據有默認值,所以數據庫中的null映射到int類型的變量num上,就變成了0,這時不正確的。
所以pojo中的字段應該都爲包裝類型。

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