spring boot參數驗證注解@NotNull、@NotBlank和@NotEmpty區別

目錄

  • 前言
  • 說明
  • 舉例

前言

使用spring boot參數驗證是常常會使用@NotNull、@NotBlank和@NotEmpty三個判斷是否不為空的注解,中文都有不能為空的意思,大部分使用者都傻傻分清它們之間到底有什么區別。今天就讓咱們來一起探索它們之間的不同吧。

說明

注解名稱功能
@NotNull可用于所有類型的字段,判斷字段不能為null
@NotBlank只能用于String類型的字段,判斷字段不能為空串或空白(空格或制表符)字符串
@NotEmpty可用于String類型和集合類型,用在String字段上時,字段不能為空串;用于集合時,集合不能為null或集合的size不為0

共同點:三個注解標注的字段都不能為null

舉例

實體User.java

import lombok.Data;import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;/*** @Description TODO* @Author liqinglong* @DateTime 2024-04-30 11:02* @Version 1.0*/
@Data
public class User {@NotBlank(message = "姓名不為空")private String userName;@NotNull(message = "年齡不能為空")private Integer age;@NotEmpty(message = "權限列表不能空")private List<String> rolerList;
}

測試類 ValidTest.java

import com.ruoyi.common.exception.ServiceException;
import org.apache.commons.collections.CollectionUtils;import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;/*** @Description TODO* @Author liqinglong* @DateTime 2024-04-30 11:07* @Version 1.0*/
public class ValidTest {public static void main(String[] args) {// Bean 驗證器ValidatorFactory vf = Validation.buildDefaultValidatorFactory();Validator validator = vf.getValidator();User user = new User();//姓名為空格或制表符user.setUserName("                      ");//年齡為nulluser.setAge(null);//權限集合的長度為0List<String> roles = new ArrayList<>();user.setRolerList(roles);// 校驗的業務對象:user,Bean 類型:UserSet<ConstraintViolation<User>> checkSet = validator.validate(user);if (CollectionUtils.isNotEmpty(checkSet)) {// Bean驗證不通過throw new ServiceException(checkSet.stream().map(ConstraintViolation::getMessage).collect(Collectors.joining(",")));}}
}

運行結果:
在這里插入圖片描述
其它各種情況,請同學自行測試,測試得出的結論歡迎到評論區留言。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/10018.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/10018.shtml
英文地址,請注明出處:http://en.pswp.cn/web/10018.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

等保測評安全物理環境測評講解

等保測評中的安全物理環境測評主要關注信息系統的物理安全保護措施&#xff0c;確保機房、設備和數據的物理安全。以下是安全物理環境測評的關鍵點講解&#xff1a; 1. **物理位置選擇**&#xff1a; - 機房應選擇在具有防震、防風和防雨能力的建筑內。 - 應避免設在建筑…

【數據庫】數據庫指令

一。數據庫打開 1.命令行 2.進入mysql mysql -uroot -p密碼 3.退出 exit&#xff1b; 二。針對數據庫的操作 1.創建數據庫&#xff08;有分號&#xff09; create database student; 2.使用數據庫 use student 3.刪除數據庫&#xff08;有分號&#xff09; drop database…

verilog基礎語法之數據類型

verilog基礎語法之數據類型 1、 wire類型2、 reg類型3、向量 Verilog最常用的數據類型有兩種&#xff1a;線網&#xff08;wire&#xff09;和寄存器&#xff08;reg&#xff09;。其中&#xff0c;wire 類型表示硬件單元之間的物理連線&#xff0c;reg用來表示存儲單元。 1、…

數據庫調優-數據庫優化

數據庫優化 如何發現復雜的SQL有問題&#xff1f; 一個個去explain嗎&#xff1f;你有沒有這樣的困惑&#xff0c;開發代碼運行順暢絲滑&#xff0c;上生產了卻卡的一逼&#xff1f; 哈哈&#xff0c;相信大家都會遇到這樣的問題&#xff01; sql 復制代碼 # 舉個栗子&…

4. 從感知機到神經網絡

目錄 1. 從感知機到神經網絡 2. 最簡單的神經網絡 3. 激活函數的引入 1. 從感知機到神經網絡 之前章節我們了解了感知機&#xff0c;感知機可以處理與門、非與門、或門、異或門等邏輯運算&#xff1b;不過在感知機中設定權重的工作是由人工來做的&#xff0c;而設定合適的&a…

【將Maven源改為國內阿里云鏡像源】

目錄 一、如何配置Maven鏡像源&#xff1f; 二、Idea中的Maven配置 ?三、項目與你本地倉庫和中央倉庫的聯系 一、如何配置Maven鏡像源&#xff1f; 1、打開你的Maven用戶設置文件(settings.xml)。默認情況下&#xff0c;該文件存在于你的用戶目錄下的.m2文件夾中。如果你沒…

小程序內使用web-view組件嵌套H5頁面,當H5頁面更換了內容后,小程序里的h5頁面不更新

這個問題是由于小程序緩存了H5的內容造成的&#xff0c;可以在H5鏈接后面拼接個參數&#xff0c;加上時間戳可做用于H5的版本號&#xff0c;這樣每次訪問都可以全新的鏈接展示內容避免緩存&#xff0c;代碼如下wxml&#xff1a; <view> <web-view src"{{urlpath…

Kafka 執行命令超時異常: Timed out waiting for a node assignment

Kafka 執行命令超時異常&#xff1a; Timed out waiting for a node assignment 問題描述&#xff1a; 搭建了一個kafka集群環境&#xff0c;在使用命令行查看已有topic時&#xff0c;報錯如下&#xff1a; [rootlocalhost bin]# kafka-topics.sh --list --bootstrap-server…

《機器學習by周志華》學習筆記-決策樹-01

本書中的「決策樹」有時指學習方法,有時指學得的樹。 1、基本流程 1.1、概念 基本流程,亦稱「判定樹」 決策樹(decision tree),是一種常見的機器學習方法。以二分類任務為例,我們希望從給定訓練數據集學得一個模型,用以對新樣例進行分離。 以二分類任務為例,可看作對…

一圖看懂 | 藍卓煤炭行業解決方案

煤炭是我國能源保障的“壓艙石,也是國民經濟中重要的支柱產業之一無論是發電、建材、造紙、冶金、化工等工業領域都離不開煤炭近年來&#xff0c;在“雙碳”及能源安全雙重背景下推動智能化技術與煤炭產業的融合發展提升煤礦安全生產能力的重要性與日俱增智慧礦山的建設已逐漸成…

CentOS 7安裝配置docker

CentOS 7、8安裝、配置docker 這里宿主機的型號選擇是centos7.9.2009的版本 1.宿主機關閉防火墻和selinux&#xff0c;配置ipv4 #設置SELinuxdisabled vim /etc/selinux/config SELinuxdisabled 查看防火墻狀態&#xff1a;firewall-cmd --state 關閉防火墻&#xff1a;syst…

selenium爬取TapTap評論

上一篇寫的beautifulsoup和request爬取出的結果有誤。首先&#xff0c;TapTap網頁以JS格式解析&#xff0c;且評論并沒有“下一頁”&#xff0c;而是每次加載到底部就要進行等待重新加載。我們需要做的&#xff0c;是模仿瀏覽器的行為&#xff0c;所以這里我們用Selenium的方式…

2024年數維杯B題完整代碼和思路論文講解與分析

2024數維杯數學建模完整代碼和成品論文已更新&#xff0c;獲取↓↓↓↓↓ https://www.yuque.com/u42168770/qv6z0d/bgic2nbxs2h41pvt?singleDoc# 2024數維杯數學建模B題45頁論文和代碼已完成&#xff0c;代碼為全部問題的代碼 論文包括摘要、問題重述、問題分析、模型假設、…

【項目實戰】使用Github pages、Hexo如何10分鐘內快速生成個人博客網站

文章目錄 一.準備工作1.安裝git2.安裝node安裝 cnpm 3.使用 GitHub 創建倉庫&#xff0c;并配置 GitHub Pages0.Github Pages是什么1. 在 GitHub 上創建一個新倉庫2. 創建您的靜態網站3. 啟用 GitHub Pages4. 等待構建完成5. 訪問您的網站 二. Hexo1.什么是Hexo2.安裝Hexo1. 安…

【MySQL】求和查詢,目標值int,但空數據時返回null的問題(Java)

問題分析 int selectDeviceMonthRepairCount(String deviceType, String month);<select id"selectDeviceMonthRepairCount" resultType"int">SELECT SUM(repair_count)FROM warranty_recordsWHERE device_type #{deviceType}AND nian_yue #{month…

【代碼筆記】高并發場景下問題解決思路

高并發指的是在單位時間內&#xff0c;瞬時流量激增&#xff0c;系統需要同時處理大量并行的請求或操作。這種情況通常出現在面向大量用戶或服務的分布式系統中&#xff0c;尤其是當用戶請求高度集中時&#xff0c;比如促銷活動、秒殺活動、注冊搶課、熱點事件、定時任務調度等…

Maven 插件使用

1.spring-boot-maven-plugin 我們直接使用 maven package &#xff08;maven自帶的package打包功能&#xff09;&#xff0c;打包Jar包的時候&#xff0c;不會將該項目所依賴的Jar包一起打進去&#xff0c;在使用java -jar命令啟動項目時會報錯&#xff0c;項目無法正常啟動。…

開源相機管理庫Aravis例程學習(七)——chunk-parser

開源相機管理庫Aravis例程學習&#xff08;七&#xff09;——chunk-parser 簡介例程代碼函數說明arv_camera_create_chunk_parserarv_camera_set_chunksarv_chunk_parser_get_integer_value 簡介 本文針對官方例程中的&#xff1a;05-chunk-parser做簡單的講解。并介紹其中調…

kali linux更新卡在libc6:amd64 (2.37-15)

適配于linux的windows子系統&#xff0c;wsl2&#xff0c;安裝kali linux&#xff0c;運行 sudo apt update 卡在&#xff1a;Setting up libc6:amd64 (2.37-15) … 關機重啟、重新修復執行也不行 解決辦法&#xff1a;kill當前apt進程或者關機重啟kali-linux&#xff0c;然…

【系統架構師】-選擇題(十二)計算機網絡

1、網閘的作用&#xff1a;實現內網與互聯網通信&#xff0c;但內網與互聯網不是直連的 2、管理距離是指一種路由協議的路由可信度。15表示該路由信息比較可靠 管理距離越小&#xff0c;它的優先級就越高&#xff0c;也就是可信度越高。 0是最可信賴的&#xff0c;而255則意味…