java中参数校验的运用和常用的几种校验注解

一,导入校验的依赖包:

<!--第一种方式导入校验依赖-->
        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>2.0.1.Final</version>
        </dependency>
        <!--第二种方式导入校验依赖-->
        <dependency>
            <groupId>org.hibernate.validator</groupId>
            <artifactId>hibernate-validator</artifactId>
        </dependency>

二,在找到自己的实体类定义自己要校验的参数

三,就是@Valid和@Validated的用法(区别)

1-1:@Valid作为标准JSR-303规范,还没有吸收分组的功能

1-2:@ValidatedJSR-303规范,提供了一个分组功能,可以在校验时,根据不同的分组采取不同的校验机制

如图:

1. @Validated(addGroup.class)就是给参数进行了分组校验

2.被我注解过的就是@Valid的用法(用的少不多说)

四,有人会问addGroup.class是哪里来的啊

addGroup.class:是一个接口类,简单的来说:就是用来给参数做标记的(里面不需要写任何代码)

五,来说一下常用的几个注解:

1.@NotNull :被注解的元素必须不为null

2.@NotBlank注解 :验证注解的元素值不为空(不为null、去除首位空格后长度为0) ,并且类型为String。

3.@NotEmpty注解 :验证注解的元素值不为null且不为空(长度不为0、集合大小不为0) ,并且类型为String。

4.@AssertTrue注解 :被注解的元素必须为true,并且类型为boolean。

5.@AssertFalse注解 :被注解的元素必须为false,并且类型为boolean。

6.@Min注解 :被注解的元素其值必须大于等于最小值,并且类型为int,long,float,double。

7. @Max注解:被注解的元素其值必须小于等于最小值,并且类型为int,long,float,double。

8.@DecimalMin注解 :验证注解的元素值大于等于@DecimalMin指定的value值,并且类型为BigDecimal。

9.@DecimalMax注解 :验证注解的元素值小于等于@DecimalMax指定的value值 ,并且类型为BigDecimal。

10. @Range注解 :验证注解的元素值在最小值和最大值之间,并且类型为BigDecimal,BigInteger,CharSequence,byte,short,int,long。

11.@Past注解 :被注解的元素必须为过去的一个时间,并且类型为java.util.Date。

12. @Future注解 :被注解的元素必须为未来的一个时间,并且类型为java.util.Date。

13.@Size注解 :被注解的元素的长度必须在指定范围内,并且类型为String,Array,List,Map。

14.@Length注解 :验证注解的元素值长度在min和max区间内 ,并且类型为String。

15.@Digits注解 :验证注解的元素值的整数位数和小数位数上限 ,并且类型为float,double,BigDecimal。

16.@Pattern注解 :被注解的元素必须符合指定的正则表达式,并且类型为String。

17.@Email注解: 验证注解的元素值是Email,也可以通过regexp和flag指定自定义的email格式,类型为String。

六,如果在写项目的过程中,参数需要的条件注解满足不上,则我们需要自定义注解来完成

第一步:建一个自定义的注解类:如图:

第二步:建一个逻辑处理数据的方法 :如图:

第三步:String message() default "{com.atguigu.common.valid.ListValue.message}";

这个消息:message() default "{com.atguigu.common.valid.ListValue.message}";

可以在配置文件中来写:

第四步:在实体类中来调用:

完成!

经验分享 程序员 微信小程序 职场和发展