成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

@NotNull, @NotBlank,@NotEmpty,你用對(duì)了嗎?

開(kāi)發(fā)
本文,我們?cè)敿?xì)地分析了@NotNull、@NotEmpty 和 @NotBlank 三個(gè)注解以及它們之間地對(duì)比。

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

1. @NotNull

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

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

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

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

2. @NotEmpty

@NotEmpty 的作用是確保字段不為 null,且不為空。因此,對(duì)于字符串來(lái)說(shuō),長(zhǎng)度必須大于 0,""(空字符串)被認(rèn)為是無(wú)效的;對(duì)于集合等,大小必須大于 0。

@NotEmpty 可以適用于以下幾種類(lèi)型:

  • 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()后長(zhǎng)度大于 0(即不僅不為空,還至少包含一個(gè)非空白字、制表符等)。

@NotBlank僅適用于 String 類(lèi)型。

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

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

4. 三者對(duì)比

下面通過(guò)一張圖表,對(duì)三者進(jìn)行詳細(xì)的對(duì)比:

注解

適用類(lèi)型

校驗(yàn)條件

@NotNull

任意引用類(lèi)型

對(duì)象不為 null

@NotEmpty

String,Collection,Map,Array

對(duì)象不為 null,且長(zhǎng)度或大小大于 0

@NotBlank

String

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

5. 使用場(chǎng)景

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

6. 示例代碼

下面我們通過(guò)一個(gè)示例同時(shí)演示 3個(gè)注解的使用:

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,不為空字符串,并且至少包含一個(gè)非空白字符。
  • roles 需要不為 null,且至少包含一個(gè)角色。

7. 總結(jié)

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

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

責(zé)任編輯:趙寧寧 來(lái)源: 猿java
相關(guān)推薦

2024-09-18 10:08:37

2022-05-09 07:27:50

ThreadLocaJava

2022-01-12 18:35:54

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

2025-06-25 02:00:00

2017-10-10 15:30:20

JavaScript

2017-11-09 13:56:46

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

2018-07-01 08:34:09

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

2024-12-10 13:00:00

C++引用

2023-11-29 07:38:33

JavaScript異步處理

2019-05-28 11:52:43

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

2020-09-18 06:39:18

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

2024-02-23 09:36:57

C#工具并行處理

2019-12-26 14:07:19

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

2015-01-26 10:55:56

云服務(wù)器PowerEdge C

2011-07-15 11:15:29

上網(wǎng)行為管理

2019-09-10 10:25:47

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

2020-08-04 08:37:23

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

2019-03-08 16:30:44

MySQPHP數(shù)據(jù)庫(kù)

2021-03-16 06:47:47

Python
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产精品99久久久精品免费观看 | 96国产精品久久久久aⅴ四区 | www.久久精品视频 | 久久久精品一区 | 欧美在线国产精品 | 在线观看免费福利 | 欧美久久一级特黄毛片 | 97精品国产手机 | 91精品免费视频 | 日韩视频一区二区在线 | 在线观看第一区 | 美女福利视频一区 | 欧美高清一区 | 成人免费一区二区三区牛牛 | 国产高清久久 | 国产一区二区精华 | 国产成人久久精品 | 亚洲顶级毛片 | 日韩高清国产一区在线 | 一区二区国产精品 | 国产精品无 | av网站在线免费观看 | av网站免费观看 | 精品国产一区二区三区性色av | 免费在线一区二区 | 精品av| 天堂一区| 亚洲一区二区精品视频在线观看 | 97精品久久 | 国产视频亚洲视频 | 久久三区 | 欧美九九 | 久久久久国产精品免费免费搜索 | 久久久久久国产精品免费免费 | 亚洲午夜在线 | av在线成人| 亚洲一区二区三区视频 | 中文字幕视频在线观看 | 日日躁狠狠躁aaaaxxxx | 国产精品视频久久 | 亚洲网站在线播放 |