自学内容网 自学内容网

Spring Boot 进阶-详解SpringBoot的复杂数据校验规则

在这里插入图片描述
  在之前的文章中,我们介绍了SpringBoot整合JSR-303规则来完成数据校验操作。接下来我们来聊一聊关于数据校验的具体用法。

  之前的文章中举过一个简单的例子通过学生信息提交的例子来介绍了关于数据校验如何去做。那么接下来这篇文章,我们就来看看对于一些复杂的数据校验如何完成。

分组

  简单的举个例子,假设在添加学生的时候,不需要传入学号,但是在修改学生信息的时候需要传入学号,并且这个时候都是使用同一个参数对象来进行接收参数,那么这个时候,这样的数据校验如何去完成?

  遇到上面这种情况,就需要对学号进行分情况讨论了。专业一点的说法叫做分组校验,什么意思呢?就是说将所有新增相关的接口看作一组,这个时候是不需要执行非空校验的。而所有修改相关的接口看作一个分组,在这个分组规则中是需要进行非空校验的。

  在之前提过的所有的数据校验规则的注解中都有一个groups的属性,这里简单的拿@NotNull做个演示,代码如下。

@Target({
    METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
@Retention(RUNTIME)
@Repeatable(List.class)
@Documented
@Constraint(validatedBy = {
    })
public @interface NotNull {
   

String message() default "{javax.validation.constraints.NotNull.message}";

Class<?>[] groups() default {
    };

Class<? extends Payload>[] payload() default {
    };

/**
 * Defines several {@link NotNull} annotations on the same element.
 *
 * @see javax.validation.constraints.NotNull
 */
@Target({
    METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
@Retention(RUNTIME)
@Documented
@interface List 

原文地址:https://blog.csdn.net/nihui123/article/details/142750688

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!