spring boot參數(shù)驗證注解@NotNull、@NotBlank和@NotEmpty區(qū)別解析
前言
使用spring boot參數(shù)驗證是常常會使用@NotNull、@NotBlank和@NotEmpty三個判斷是否不為空的注解,中文都有不能為空的意思,大部分使用者都傻傻分清它們之間到底有什么區(qū)別。今天就讓咱們來一起探索它們之間的不同吧。
說明
| 注解名稱 | 功能 |
|---|---|
| @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 = "權(quán)限列表不能空")
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(" ");
//年齡為null
user.setAge(null);
//權(quán)限集合的長度為0
List<String> roles = new ArrayList<>();
user.setRolerList(roles);
// 校驗的業(yè)務(wù)對象:user,Bean 類型:User
Set<ConstraintViolation<User>> checkSet = validator.validate(user);
if (CollectionUtils.isNotEmpty(checkSet)) {
// Bean驗證不通過
throw new ServiceException(checkSet.stream().map(ConstraintViolation::getMessage).collect(Collectors.joining(",")));
}
}
}運行結(jié)果:

其它各種情況,請同學自行測試,測試得出的結(jié)論歡迎到評論區(qū)留言。
到此這篇關(guān)于spring boot參數(shù)驗證注解@NotNull、@NotBlank和@NotEmpty區(qū)別的文章就介紹到這了,更多相關(guān)spring boot參數(shù)驗證注解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java的main方法中調(diào)用spring的service方式
這篇文章主要介紹了在java的main方法中調(diào)用spring的service方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12
Elasticsearch中FST與前綴搜索應(yīng)用實戰(zhàn)解析
這篇文章主要為大家介紹了Elasticsearch中FST與前綴搜索應(yīng)用實戰(zhàn)解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08
Java concurrency之公平鎖(一)_動力節(jié)點Java學院整理
這篇文章主要為大家詳細介紹了Java concurrency之公平鎖的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06

