zoukankan      html  css  js  c++  java
  • 数据校验-hibernate-validator

    数据校验
    在web开发时,对于请求参数,一般上都需要进行参数合法性校验的,原先的写法时一个个字段一个个去判断,这种方式太不通用了,所以java的JSR 303: Bean Validation规范就是解决这个问题的。
    
    JSR 303只是个规范,并没有具体的实现,目前通常都是才有hibernate-validator进行统一参数校验。
    
    JSR303定义的校验类型
    
    Constraint	详细信息
    @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)	被注释的元素必须符合指定的正则表达式
    Hibernate Validator 附加的 constraint
    
    Constraint	详细信息
    @Email	被注释的元素必须是电子邮箱地址
    @Length	被注释的字符串的大小必须在指定的范围内
    @NotEmpty	被注释的字符串的必须非空
    @Range	被注释的元素必须在合适的范围内
    创建实体类
    
    @Data
    
    @NoArgsConstructor
    
    @AllArgsConstructor
    
    public class DemoReq {
    
         
    
        @NotBlank(message="code不能为空")
    
        String code;
    
        @Length(max=10,message="name长度不能超过10")
    
        String name;
    
    }
    
    然后在控制层方法里,加入@Valid即可,这样在访问前,会对请求参数进行检验。
    
    
    @GetMapping("/demo/valid")
    
    public String demoValid(@Valid DemoReq req) {
    
        return req.getCode() + "," + req.getName();
    
    }
    

      

  • 相关阅读:
    docker构建镜像
    SpringBoot 配置的加载
    Gradle实战(02)--Gradle Build的创建
    Gradle实战(01)--介绍与安装
    统计最常用10个命令的脚本
    jackson序列化与反序列化的应用实践
    go http请求流程分析
    java线程的3种实现方式及线程池
    git多账号使用
    java多版本管理
  • 原文地址:https://www.cnblogs.com/Struts-pring/p/10962036.html
Copyright © 2011-2022 走看看