当前位置:主页 > java教程 > Spring @NotEmpty、@NotBlank、@NotNull

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

发布:2023-04-07 17:45:01 59


本站收集了一篇相关的编程文章,网友边景明根据主题投稿了本篇教程内容,涉及到Spring、@NotEmpty、@NotBlank、@NotNull、Spring @NotEmpty、@NotBlank、@NotNull相关内容,已被183网友关注,内容中涉及的知识点可以在下方直接下载获取。

Spring @NotEmpty、@NotBlank、@NotNull

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内容请搜索码农之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持码农之家!


参考资料

相关文章

  • 浅析Spring boot 中 logback 配置<springProperty> 读取application.properties 中的属性

    发布:2023-04-08

    这篇文章主要介绍了浅析Spring boot 中 logback 配置<springProperty> 读取application.properties 中的属性,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下


  • SpringMVC框架post提交数据库出现乱码解决方案

    SpringMVC框架post提交数据库出现乱码解决方案

    发布:2022-11-07

    给大家整理一篇关于Spring MVC的教程,这篇文章主要介绍了SpringMVC框架post提交数据库出现乱码解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下


  • Spring AOP实现用户登录统一验证功能

    发布:2023-03-07

    这篇文章主要为大家详细介绍了Spring AOP如何实现用户登录统一验证功能,文中的示例代码讲解详细,对我们学习具有一定的借鉴价值,需要的可以参考一下


  • Spring中RedisTemplate的基本使用浅析

    发布:2023-03-28

    Spring Boot Data(数据) Redis中提供了RedisTemplate和StringRedisTemplate,其中StringRedisTemplate是RedisTemplate的子类,两个方法基本一致。本文介绍了Spring操作Redis的方法,需要的可以参考一下


  • SpringBoot访问windows共享文件的方法

    发布:2023-04-12

    这篇文章主要介绍了SpringBoot访问windows共享文件,项目使用minio存储且不在同一台服务器上,为了优化速度决定使用windows共享功能进行文件传输,本文结合实例代码给大家介绍的非常详细,需要的朋友可以参考下


  • Spring BeanFactory工厂使用教程

    发布:2023-04-11

    Spring的本质是一个bean工厂(beanFactory)或者说bean容器,它按照我们的要求,生产我们需要的各种各样的bean,提供给我们使用。只是在生产bean的过程中,需要解决bean之间的依赖问题,才引入了依赖注入(DI)这种技术


  • Springboot项目平滑关闭及自动化关闭脚本详解

    发布:2020-02-04

    这篇文章主要为大家详细介绍了Springboot项目平滑关闭及自动化关闭脚本,具有一定的参考价值,感兴趣的小伙伴们可以参考一下


  • Spring Cloud几行配置完成单点登录开发实例讲解

    发布:2019-09-07

    这篇文章主要介绍了详解基于Spring Cloud几行配置完成单点登录开发,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧


网友讨论