Spring 中 @NotEmpty、@NotBlank、@NotNull,傻傻分不清楚!

news/2024/11/25 23:41:23/

1、引入依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.0.5.RELEASE</version>
</dependency>

@NotEmpty、@NotBlank、@NotNull 包的位置:import javax.validation.constraints.*;

2、区别

@NotNull
适用于基本数据类型(Integer,Long,Double等等),当 @NotNull 注解被使用在 String 类型的数据上,则表示该数据不能为 Null(但是可以为 Empty)

注:被其标注的字段可以使用 @size、@Max、@Min 对字段数值进行大小的控制

@NotBlank
适用于 String 类型的数据上,加了@NotBlank 注解的参数不能为 Null 且 trim() 之后 size > 0,必须有实际字符

@NotEmpty
适用于 String、Collection集合、Map、数组等等,加了@NotEmpty 注解的参数不能为 Null 或者 长度为 0

3、使用方法

@Data
public class BigPeople {@ApiModelProperty(value = "id" ,required = true)@NotNull(message = "id不能为空")@Length(message = "id不能超过{max}个长度",max = 10)private Integer id;@ApiModelProperty(value = "name" ,required = true)@NotBlank(message = "name不能为空")@Size(message = "名字最长为{max} 个字",max = 10)private String name;@ApiModelProperty(value = "age" ,required = true)@NotNull(message = "id不能为空")@Range(message = "age的长度范围为{min}岁到{max}岁之间",min = 5,max = 10)private Integer age;@ApiModelProperty(value = "treeNode" ,required = true)@NotEmpty(message = "treeNode不能为空")private List<String> treeNode;}

@Valid 包位置:

import javax.validation.Valid;

@Validated 包的位置

import org.springframework.validation.annotation.Validated;
@ApiOperation(value = "新增或者修改一个人的信息")
@PostMapping("/updateOrInsert")
public Result updateOrInsert(@Valid @RequestBody  Person person){Boolean updateOrInsert = personService.updateOrInsert(person);if (updateOrInsert) {return new Result(ResultCode.SUCCESS,updateOrInsert);}return new Result(ResultCode.ERROR, "新增或者修改一个人的信息失败");
}@ApiOperation(value = "新增或者修改一个人的信息")
@PostMapping("/updateOrInsert")
public Result updateOrInsert(@Validated @RequestBody  Person person){Boolean updateOrInsert = personService.updateOrInsert(person);if (updateOrInsert) {return new Result(ResultCode.SUCCESS,updateOrInsert);}return new Result(ResultCode.ERROR, "新增或者修改一个人的信息失败");
}

最上面三个注释:必须需要搭配@Valid 或者@Validated使用,在检验Controller的入参是否符合规范时。

@Valid 和 @Validated 比较

最后我们来对 @Valid 和 @Validated 两个注解进行总结下:

1:@Valid 和 @Validated 两者都可以对数据进行校验,待校验字段上打的规则注解(@NotNull, @NotEmpty等)都可以对 @Valid 和 @Validated 生效;

2:@Valid 进行校验的时候,需要用 BindingResult 来做一个校验结果接收。当校验不通过的时候,如果手动不 return ,则并不会阻止程序的执行;

3:@Validated 进行校验的时候,当校验不通过的时候,程序会抛出400异常,阻止方法中的代码执行,这时需要再写一个全局校验异常捕获处理类,然后返回校验提示。

4:总体来说,@Validated 使用起来要比 @Valid 方便一些,它可以帮我们节省一定的代码,并且使得方法看上去更加的简洁。

此包下其它常用的校验注解:

在这里插入图片描述


http://www.ppmy.cn/news/82464.html

相关文章

超声波雷达介绍 ———— 分类介绍

文章目录 介绍安装位置UPAAPA 传感器种类等方性传感器超声波雷达异方性传感器超声波雷达 技术方案模拟式四线式数位二线式数位三线式主动数位 其他密闭式超声波传感器开放式超声波传感器 介绍 超声波的定义 —— 波长短于2cm的机械波称为“超声波”。 超声波属于机械波&#xf…

云服务器部署springboot项目无法访问解决办法

文章目录 部署环境问题解决ipv4和ipv6的问题防火墙的问题 部署环境 在华为云上购买了一个云的ecs服务器安装的centos7.5的操作系统。部署面板采用了宝塔linux。springboot的访问端口为8080。在华为云的安全组规则中配置了8080端口放通。 碰到的问题是&#xff0c;上传了sprin…

服务提供者 Eureka + 服务消费者(Rest + Ribbon)实战

1、Ribbon背景介绍 Ribbon是Netflix发布的开源项目&#xff0c;主要功能是提供客户端的软件负载均衡算法&#xff0c;将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系列完善的配置项如连接超时&#xff0c;重试等。简单来说&#xff0c;就是在配置文件中列出Load B…

《程序员的炫技代码》

程序员&#xff0c;这个职业总是让人感到神秘而又充满魅力。他们手中的代码常常充满了令人惊叹的炫技操作&#xff0c;让人不禁感叹他们的技术能力之高。在这篇文章中&#xff0c;我想和大家分享一些我所知道的程序员的炫技代码。 一行代码实现斐波那契数列 斐波那契数列是一…

从 Oracle 迁移到 TiDB 的方案设计与用户实践

作者 盛玉 &#xff0c; 中国人寿财险金融科技中心系统运行部 王耀强 &#xff0c; PingCAP 资深解决方案架构师 导读 当前&#xff0c;全球数字化浪潮推动数字经济与实体经济融合&#xff0c;更多的企业意识到数据平台对业务增长和创新的重要性。通过国产化迁移和替换数据…

成都PMP培训机构有推荐的吗?

PMP考试是不是必须要报班&#xff1f;自学可以考试吗&#xff1f;不需要报班的话&#xff0c;自学难度大吗&#xff1f;成都PMP培训机构有推荐的吗&#xff1f; 首先&#xff0c;PMP考试并非必须要报班&#xff0c;自学也可以考试。但是需要注意的是&#xff0c;PMP考试难度较大…

小航助学信息学奥赛C++ GoC模拟试卷(含题库答题软件账号)

信息学奥赛C GoC系统请点击 电子学会-全国青少年编程等级考试真题Scratch一级&#xff08;2019年3月&#xff09;在线答题_程序猿下山的博客-CSDN博客_小航答题助手 单选题10.0分 删除编辑 答案:C 第1题goc命令可以通过多命令拼接方式&#xff0c;优化代码布局&#xff0c;…

运动员最佳配对问题——算法设计与分析(C实现)

目录 一、问题简述 二、分析 三、代码展示 四、结果验证 一、问题简述 问题描述&#xff1a;羽毛球队有男女运动员各n人。给定2个n*n矩阵P和Q。P[i][j]是男运动员i和女运动员j配对组成混合双打的男运动员竞争优势&#xff1b;Q[i][j]是男运动员i和女运动员j配合的女运动员竞…