自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

@NotNull, @NotBlank,@NotEmpty,你用對了嗎?

開發(fā)
本文,我們詳細地分析了@NotNull、@NotEmpty 和 @NotBlank 三個注解以及它們之間地對比。

@NotNull、@NotEmpty 和 @NotBlank 是 Java Bean Validation(如 Hibernate Validator)中常用的注解,用于校驗字段的有效性。它們之間有不同的適用場景和約束條件。這篇文章,我們將詳細解釋它們的區(qū)別及使用場景。

1. @NotNull

@NotNull的作用是僅確保字段不為 null。因此,對于字符串來說,允許為空字符串 ("");對于集合等,也只檢查是否為 null,不檢查是否為空集合。

@NotNull適用于任何類型的對象(如字符串、集合、自定義對象等)。

如下示例,展示了@NotNull注解的使用:

public class User {
    @NotNull(message = "用戶名不能為空")
    private String username;
}

2. @NotEmpty

@NotEmpty 的作用是確保字段不為 null,且不為空。因此,對于字符串來說,長度必須大于 0,""(空字符串)被認為是無效的;對于集合等,大小必須大于 0。

@NotEmpty 可以適用于以下幾種類型:

  • String
  • Collection(如 List, Set)
  • Map
  • Array

如下示例,展示了@NotEmpty注解的使用::

public class User {
    @NotEmpty(message = "用戶名不能為空")
    private String username;

    @NotEmpty(message = "角色列表不能為空")
    private List<String> roles;
}

3. @NotBlank

@NotBlank的作用是確保字符串不為 null,且.trim()后長度大于 0(即不僅不為空,還至少包含一個非空白字、制表符等)。

@NotBlank僅適用于 String 類型。

如下示例,展示了@NotBlank注解的使用:

public class User {
    @NotBlank(message = "密碼不能為空")
    private String password;
}

4. 三者對比

下面通過一張圖表,對三者進行詳細的對比:

注解

適用類型

校驗條件

@NotNull

任意引用類型

對象不為 null

@NotEmpty

String,Collection,Map,Array

對象不為 null,且長度或大小大于 0

@NotBlank

String

字符串不為 null,且.trim()后長度大于 0

5. 使用場景

  • @NotNull:當只需要確保某個字段被賦值(不關心內容)時。例如,用戶的ID字段在數(shù)據(jù)庫中不能為空。
  • @NotEmpty:當需要確保某個集合或字符串不僅被賦值,而且包含至少一個元素或字符時。例如,用戶注冊時需要至少有一個角色。
  • @NotBlank:當需要確保字符串不僅被賦值,而且包含實際的非空白字符時。例如,用戶注冊時的密碼字段不能只是空格。

6. 示例代碼

下面我們通過一個示例同時演示 3個注解的使用:

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;

public class User {

    @NotNull(message = "用戶ID不能為空")
    private Long id;

    @NotEmpty(message = "用戶名不能為空")
    private String username;

    @NotBlank(message = "密碼不能為空且不能全為空白")
    private String password;

    @NotEmpty(message = "角色列表不能為空")
    private List<String> roles;

    // Getters and Setters
}

在上述示例中:

  • id 只需要不為 null。
  • username 需要不為 null 且不為空字符串。
  • password 需要不為 null,不為空字符串,并且至少包含一個非空白字符。
  • roles 需要不為 null,且至少包含一個角色。

7. 總結

本文,我們詳細地分析了三個注解以及它們之間地對比。@NotNull僅校驗對象不為null,適用于所有引用類型;@NotEmpty確保集合、數(shù)組或字符串不為null且有長度;@NotBlank專用于字符串,要求不為null、不為空且包含非空白字符。根據(jù)字段類型和校驗需求選擇合適的注解,以確保數(shù)據(jù)的完整性和有效性。

通過合理使用這些注解,可以確保數(shù)據(jù)的完整性和有效性,減少潛在的運行時錯誤。

責任編輯:趙寧寧 來源: 猿java
相關推薦

2024-09-18 10:08:37

2022-05-09 07:27:50

ThreadLocaJava

2022-01-12 18:35:54

MongoDB數(shù)據(jù)查詢

2017-10-10 15:30:20

JavaScript

2017-11-09 13:56:46

數(shù)據(jù)庫MongoDB水平擴展

2023-11-29 07:38:33

JavaScript異步處理

2024-12-10 13:00:00

C++引用

2018-07-01 08:34:09

緩存數(shù)據(jù)服務

2020-09-18 06:39:18

hashMap循環(huán)數(shù)據(jù)

2019-05-28 11:52:43

可視化圖表數(shù)據(jù)

2024-02-23 09:36:57

C#工具并行處理

2015-01-26 10:55:56

云服務器PowerEdge C

2019-12-26 14:07:19

隨機數(shù)偽隨機多線程

2019-09-10 10:25:47

數(shù)據(jù)庫管理工具Valentina S

2011-07-15 11:15:29

上網(wǎng)行為管理

2020-08-04 08:37:23

Kafka分區(qū)數(shù)

2018-01-25 16:49:08

開源容器云編排工具

2018-07-04 06:26:00

無線路由器網(wǎng)絡WiFi

2019-03-08 16:30:44

MySQPHP數(shù)據(jù)庫
點贊
收藏

51CTO技術棧公眾號