返回顶部
首页 > 资讯 > 后端开发 > Python >浅谈Spring中@NotEmpty、@NotBlank、@NotNull区别
  • 723
分享到

浅谈Spring中@NotEmpty、@NotBlank、@NotNull区别

Spring@NotEmpty@NotBlank@NotNull 2023-02-09 12:02:49 723人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录1:引入依赖2:区别3:使用方法@Valid 和 @Validated 比较1:引入依赖 <dependency> <g

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 方便一些,它可以帮我们节省一定的代码,并且使得方法看上去更加的简洁。

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

注解含义
@Null元素必须为null
@NotNull元素不能null
@AssertTrue元素必须为true
@AssertFalse元素必须是false
@Min(value)元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value)元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMin(value)元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value)元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max,min)元素的大小必须在指定的范围内
@Digits(integer,fraction)元素必须是一个数字,其值必须在可接受的范围内
@Past元素必须是一个过去的日期
@Future元素必须是一个将来的日期
@Pattern(value)元素必须符合指定的正则表达式

@Email

@Length

@NotEmpty

@Range

1:元素必须是电子邮箱地址

2:字符串的大小必须在指定的范围内

3:字符串必须非空

4:元素必须在合理的范围内

到此这篇关于浅谈Spring中@NotEmpty、@NotBlank、@NotNull区别的文章就介绍到这了,更多相关Spring @NotEmpty、@NotBlank、@NotNull内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 浅谈Spring中@NotEmpty、@NotBlank、@NotNull区别

本文链接: https://lsjlt.com/news/195327.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 浅谈Spring中@NotEmpty、@NotBlank、@NotNull区别
    目录1:引入依赖2:区别3:使用方法@Valid 和 @Validated 比较1:引入依赖 <dependency> <g...
    99+
    2023-02-09
    Spring @NotEmpty @NotBlank @NotNull
  • @NotEmpty、@NotBlank、@NotNull三种注解的区别
    @NotNull :用在基本数据类型的非空校验,不能为null,但可以为empty。 而且被其标注的字段可以使用 @size、@Max、@Min 对字段数值进行大小的控制 @NotEmpty:用在集合类或数组上,不能为空,但长度必须大于0 ...
    99+
    2023-08-21
    java
  • 浅谈Spring框架中@Autowired和@Resource的区别
    目录前言默认注入方式不同提供者不同补充:@Resource的装配顺序如下总结前言 写过Spring框架的同学应该都知道,Spring当中使用字段注入的时候既可以用 @Autowire...
    99+
    2022-11-13
    @autowired和@resource区别 spring @autowired @resource
  • 浅谈spring和spring MVC的区别与关系
    spring是一个开源框架,功能主要是依赖注入和控制反转。依赖注入有三种形式1、构造注入(bytype)2、setter注入3、接口注入(byname) 而控制反转则主要是起到操控作用,把对象的创建,初始化,销毁交给spring容器来处理。...
    99+
    2023-05-31
    spring springmvc sprin
  • 浅谈Spring中几个PostProcessor的区别与联系
    目录Spring几个PostProcessor的区别首先明确 Bean 的生命周期:查看 IOC 容器创建时的调用流程spring-postProcessor的执行时机BeanPos...
    99+
    2024-04-02
  • 浅谈Java中replace与replaceAll区别
    在Java中,replace和replaceAll都是用于替换字符串中的字符或字符串的方法,但它们之间有一些区别。1. 参数类型:-...
    99+
    2023-08-14
    Java
  • 浅谈spring DI 依赖注入方式和区别
    目录spring DI 3种DI注解的区别 1 @Autowired 2 @Inject 3 @Resource 3种注入方式的区别 1 field注入 2 构造器注入 3 sett...
    99+
    2024-04-02
  • 浅谈Java中Lock和Synchronized的区别
    目录1. 从功能角度来看2. 从特性来看3. 从性能方面来看1. 从功能角度来看 Lock和Synchronized都是java中去用来解决线程安全问题的一个工具 2. 从特性来看 ...
    99+
    2024-04-02
  • 浅谈C++中const与constexpr的区别
    目录一.const常量与#define比较二.const修饰1.修饰普通变量,必须初始化2.修饰类变量和成员变量3.修饰成员函数4.修饰指针5.修饰引用三.const转换四.顶层co...
    99+
    2024-04-02
  • 浅谈System.getenv()和System.getProperty()的区别
    最近遇到一个需求,服务器实例需要获取当前的环境变量。经过查资料,发现环境变量可以在两个地方设置。 一、在系统层面设置环境变量 在系统层面设置环境变量,之前我们应该都操作过,以wind...
    99+
    2024-04-02
  • 浅谈Mysql8和mysql5.7的区别
    目录1.NoSql存储2.隐藏索引3.设置持久化4.UTF-8编码5.通用表表达式(CommonTableExpressions)1.NoSql存储 Mysql从5.7 版本提供了N...
    99+
    2024-04-02
  • 浅谈RedisTemplate和StringRedisTemplate的区别
    目录一、区别二、问题总结三、案例:springboot整合redis五种数据结构API1、string(字符串)类型2、hash(哈希)类型3、list(列表)类型4、set(无序集...
    99+
    2024-04-02
  • 一文浅谈:&和&&的区别
    当我们在Java中使用逻辑运算符时,经常会用到两个符号:& 和 &&。这两个符号在表达式中的作用非常重要,但是很多人容易混淆它们的使用,因此我们需要了解它们之间的区别。 一、& 和 && 的用途 & 和 && 都可以用于逻辑运算,例 in...
    99+
    2023-10-24
    java jvm 面试
  • Spring中@Validated和@Valid区别浅析
    目录基本概念@Valid和@Validated 批注主要区别什么是嵌套验证?总结基本概念 Spring Validation 验证框架对参数的验证机制提供了@Validated(Sp...
    99+
    2024-04-02
  • 浅谈Java中static和非static的区别
    关于static和非static变量的区别 static 修饰的变量称为类变量或全局变量或成员变量,在类被加载的时候成员变量即被初始化,与类关联,只要类存在,static变量就存在。非static修饰的成员变量是在对象new出来的时候划分存...
    99+
    2023-05-31
    java static ava
  • 浅谈JS中var,let和const的区别
    目录区别1区别2区别3区别4区别5区别6区别7区别1 let和var用来声明变量,const用来声明常量。 变量就是赋值后可以改变它的值,常量就是赋值后就不能改变它的值。 当声明为对...
    99+
    2024-04-02
  • 浅谈String、StringBuffer和StringBuilder的区别
    在Java开发面试经常会被问到String,StringBuider,StringBuffer区别,很多人回答得不够全面和深入,那么它们到底都有什么区别呢!三者都是用来对字符串进行操作,String通常用来定义一个变量,而StringBui...
    99+
    2019-10-22
    java入门 java String StringBuffer StringBuilder
  • 浅谈Ribbon、Feign和OpenFeign的区别
    Ribbon Ribbon 是 Netflix开源的基于HTTP和TCP等协议负载均衡组件 Ribbon 可以用来做客户端负载均衡,调用注册中心的服务 Ribbon的使用需要代码里手...
    99+
    2024-04-02
  • 浅谈HttpClient、okhttp和RestTemplate的区别
    一、HttpClient 1、pom依赖 <!--HttpClient--> <dependency> <groupId>common...
    99+
    2024-04-02
  • 浅谈springboot@Repository与@Mapper的区别
    目录1、@Repository2、@Mapper3、区别相同点:不同点:4、解决使用@mapper接口时,注入mapper爆红问题今天在用springboot整合mybatis时,m...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作