@Valid与@Validated知识点总结+实践积累

知识点与用法

1. @Validated和@Valid的区别

区别

@Valid注解

@Validated注解

提供者

JSR-303规范

Spring

是否支持分组

不支持

支持

标注位置

METHOD, FIELD, CONSTRUCTOR, PARAMETER, TYPE_USE

TYPE, METHOD, PARAMETER

嵌套校验

支持

不支持

2. 依赖导入

  • 使用SpringBoot整合 – 本文所有代码只引入下面两个依赖。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.1.5.Final</version>
</dependency>
<!--如果spring-boot版本小于2.3.x,引入spring-boot-starter-web即可,hibernate-validator将被自动引入-->
<!--如果spring-boot版本大于2.3.x,引入spring-boot-starter-web、hibernate-validator-->
  • 本质依赖

<!--数据校验api接口-->
<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>xxx</version>
</dependency>
<!--数据校验api实现-->
<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>xxx</version>
</dependency>
<!--hibernate-validator只不过是一堆数据校验接口的实现类,和数据库没有半点关系-->

3. 常用数据校验注解

// JSR提供的校验注解:         
@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(regex=,flag=)  被注释的元素必须符合指定的正则表达式    

// Hibernate Validator提供的校验注解:  
@NotBlank(message =)   验证字符串非null,且长度必须大于0    
@Email  被注释的元素必须是电子邮箱地址    
@Length(min=,max=)  被注释的字符串的大小必须在指定的范围内    
@NotEmpty   被注释的字符串的必须非空    
@Range(min=,max=,message=)  被注释的元素必须在合适的范围内

实践积累

  1. 校验嵌套的List属性,必须要使用@Valid,不能使用@Validated,@Validated不能校验属性。

如果需要分组校验那控制层参数必须同时加上@Valid 和 @Validated 不然接受参数的类中的List集合数据无法校验

2. 校验List中的每个对象

参考: https://blog.csdn.net/weixin_43990804/article/details/112974137

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值