spring boot參數(shù)驗(yàn)證注解@NotNull、@NotBlank和@NotEmpty區(qū)別解析
前言
使用spring boot參數(shù)驗(yàn)證是常常會(huì)使用@NotNull、@NotBlank和@NotEmpty三個(gè)判斷是否不為空的注解,中文都有不能為空的意思,大部分使用者都傻傻分清它們之間到底有什么區(qū)別。今天就讓咱們來(lái)一起探索它們之間的不同吧。
說(shuō)明
注解名稱(chēng) | 功能 |
---|---|
@NotNull | 可用于所有類(lèi)型的字段,判斷字段不能為null |
@NotBlank | 只能用于String類(lèi)型的字段,判斷字段不能為空串或空白(空格或制表符)字符串 |
@NotEmpty | 可用于String類(lèi)型和集合類(lèi)型,用在String字段上時(shí),字段不能為空串;用于集合時(shí),集合不能為null或集合的size不為0 |
共同點(diǎn):三個(gè)注解標(biāo)注的字段都不能為null
舉例
實(shí)體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; }
測(cè)試類(lèi) 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 驗(yàn)證器 ValidatorFactory vf = Validation.buildDefaultValidatorFactory(); Validator validator = vf.getValidator(); User user = new User(); //姓名為空格或制表符 user.setUserName(" "); //年齡為null user.setAge(null); //權(quán)限集合的長(zhǎng)度為0 List<String> roles = new ArrayList<>(); user.setRolerList(roles); // 校驗(yàn)的業(yè)務(wù)對(duì)象:user,Bean 類(lèi)型:User Set<ConstraintViolation<User>> checkSet = validator.validate(user); if (CollectionUtils.isNotEmpty(checkSet)) { // Bean驗(yàn)證不通過(guò) throw new ServiceException(checkSet.stream().map(ConstraintViolation::getMessage).collect(Collectors.joining(","))); } } }
運(yùn)行結(jié)果:
其它各種情況,請(qǐng)同學(xué)自行測(cè)試,測(cè)試得出的結(jié)論歡迎到評(píng)論區(qū)留言。
到此這篇關(guān)于spring boot參數(shù)驗(yàn)證注解@NotNull、@NotBlank和@NotEmpty區(qū)別的文章就介紹到這了,更多相關(guān)spring boot參數(shù)驗(yàn)證注解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java的main方法中調(diào)用spring的service方式
這篇文章主要介紹了在java的main方法中調(diào)用spring的service方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12Elasticsearch中FST與前綴搜索應(yīng)用實(shí)戰(zhàn)解析
這篇文章主要為大家介紹了Elasticsearch中FST與前綴搜索應(yīng)用實(shí)戰(zhàn)解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08Java concurrency之公平鎖(一)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了Java concurrency之公平鎖的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06RocketMQ根據(jù)Tag進(jìn)行消息過(guò)濾
消費(fèi)者訂閱了某個(gè)主題后,Apache RocketMQ 會(huì)將該主題中的所有消息投遞給消費(fèi)者。若消費(fèi)者只需要關(guān)注部分消息,可通過(guò)設(shè)置過(guò)濾條件在 Apache RocketMQ 服務(wù)端進(jìn)行過(guò)濾,只獲取到需要關(guān)注的消息子集,避免接收到大量無(wú)效的消息2023-02-02java創(chuàng)建多級(jí)目錄文件的實(shí)例講解
下面小編就為大家分享一篇java創(chuàng)建多級(jí)目錄文件的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01