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