在你不知道的情況下,前端傳給後端的資料會有一些變化。
如果在 idea 中使用了“阿裡編碼規約”的插件,那麼插件中會有如下提示資訊。
關于基本資料類型與包裝資料類型的使用标準如下:
1) 所有的POJO類屬性必須使用包裝資料類型。
2) RPC方法的傳回值和參數必須使用包裝資料類型。
3) 所有的局部變量推薦使用基本資料類型。
說明:POJO類屬性沒有初值是提醒使用者在需要使用時,必須自己顯式地進行指派,任何NPE問題,或者入庫檢查,都由使用者來保證。
以下是實際使用中會出現的情況
開發環境:
- Postman
- IDEA
以下用 POJO 中屬性 id 舉例
- 當 ID 為 int 時,如下:
/**
* 使用者實體
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class UserDTO extends Page {
/**
* 使用者ID
*/
private int id;
......
}
- 當 ID 為 Integer 時
/**
* 使用者實體
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class UserDTO extends Page {
/**
* 使用者ID
*/
private Integer id;
......
}
3.postman 傳輸資料的方式為以下幾種
1)不傳id的情況:
{
"size": 2,
"current": 1
}
2)id 為 null 的情況:
{
"size": 2,
"current": 1,
"id": null
}
3)id 為空字元串的情況:
{
"size": 2,
"current": 1,
"id": ""
}
4)id 為 0 的情況:
{
"size": 2,
"current": 1,
"id": 0
}
以下是前端将 id 的值傳至後端時,後端擷取 id 值對照表
傳輸值 | int | Integer |
---|---|---|
不傳 | null | |
"" | ||
其他基礎類型和包裝類基本類似,比如 double 與 Double 的對照表如下:
double | Double | |
---|---|---|
0.0 | ||
從實際使用情況可以看出,目前端不傳值時,或者傳 null時,或者傳空字元串("")時,基礎類型都會有值,這可能在後續開發的業務邏輯中會有幹擾,同時也容易有異常出現。特别是在需要計算數值的時候,更容易出現業務邏輯的問題。
是以,如規範中所說,POJO類屬性最好使用包裝資料類型,可以減少開發過程中異常情況的出現,也可以防止 BUG 的出現。