湖南网站开发,wordpress防止被镜像,网址升级中 请稍后访问,百度app推广方法Spring Boot 提供了一组基于 Hibernate Validator 的校验注解#xff0c;用于验证请求参数、实体对象等数据的合法性。下面是一些常用的 Spring Boot 校验注解及其功能#xff1a;
导入依赖 dependencygroupIdorg.springframework.boot/groupId…Spring Boot 提供了一组基于 Hibernate Validator 的校验注解用于验证请求参数、实体对象等数据的合法性。下面是一些常用的 Spring Boot 校验注解及其功能
导入依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-validation/artifactId/dependency Null 限制只能为null NotNull 适用于任何类型被注解的元素必须不能与NULL NotEmpty 适用于String Map或者数组不能为Null且长度必须大于0 NotBlank 只能用于String上面 不能为null,调用trim()后长度必须大于0 AssertFalse 限制必须为false AssertTrue 限制必须为true DecimalMax(value) 限制必须为一个不大于指定值的数字 DecimalMin(value) 限制必须为一个不小于指定值的数字 Digits(integer,fraction) 限制必须为一个小数且整数部分的位数不能超过integer小数部分的位数不能超过fraction Future 限制必须是一个将来的日期 Past 验证注解的元素值日期类型比当前时间早 Max(value) 限制必须为一个不大于指定值的数字 Min(value) 限制必须为一个不小于指定值的数字 Pattern(value) 限制必须符合指定的正则表达式 Size(max,min) 限制字符长度必须在min到max之间 Email 验证注解的元素值是Email也可以通过正则表达式和flag指定自定义的email格式 针对于校验注解统一异常处理
RestControllerAdvice
public class MethodArgumentNotValidExceptionHandle {//统一异常处理ExceptionHandler(MethodArgumentNotValidException.class)public RespResult result(MethodArgumentNotValidException exception){BindingResult bindingResult exception.getBindingResult();MapString,String mapnew HashMap();bindingResult.getFieldErrors().forEach(i-{map.put(i.getField(),i.getDefaultMessage());});return RespResult.ok(map);}
}
在 Spring Boot 中可以通过自定义注解和对应的校验器来实现自定义校验注解。下面是实现自定义校验注解的步骤设计一个Contains限制字符串必须包含某个前缀字符串。
实体类如下
TableName(value brand)
Data
public class Brand implements Serializable {TableId(type IdType.AUTO)private Integer id;NotBlankprivate String name;URLprivate String image;Contains(str brand)private String initial;Min(value 0)Max(value 10)private Integer sort;private static final long serialVersionUID 1L;
}
Contains注解
Documented
Constraint(validatedBy {ContainsForString.class}
)
Target({ElementType.FIELD})
Retention(RetentionPolicy.RUNTIME)
public interface Contains {String message() default 没有包含指定前缀的字符串;Class?[] groups() default {};Class? extends Payload[] payload() default {};String str() default ;
}public class ContainsForString implements ConstraintValidatorContains,String {private String str;Overridepublic void initialize(Contains constraintAnnotation) {str constraintAnnotation.str();}Overridepublic boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {//s是字符串属性值return s.startsWith(str);}
}
Apipost测试