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(" "); //年龄为null user.setAge(null); //权限集合的长度为0 List<String> roles = new ArrayList<>(); user.setRolerList(roles); // 校验的业务对象: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(","))); } } }
运行结果:
其它各种情况,请同学自行测试,测试得出的结论欢迎到评论区留言。
到此这篇关于spring boot参数验证注解@NotNull、@NotBlank和@NotEmpty区别的文章就介绍到这了,更多相关spring boot参数验证注解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
IDEA 服务器热部署图文详解(On Update action/On frame deactivation)
这篇文章主要介绍了IDEA 服务器热部署详解(On Update action/On frame deactivation),本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2023-03-03SpringBoot自定义maven-plugin插件整合asm代码插桩
本文主要介绍了SpringBoot自定义maven-plugin插件整合asm代码插桩,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2022-02-02
最新评论