• JAVA中通过Hibernate-Validation进行参数验证


    在开发JAVA服务器端代码时,我们会遇到对外部传来的参数合法性进行验证,而hibernate-validator提供了一些常用的参数校验注解,我们可以拿来使用。
    1.maven中引入hibernate-validator对应的jar:

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>4.3.1.Final</version> 
    </dependency>
    

    2.在Model中定义要校验的字段(即该字段不能为空,并且最大长度为14):**

    import javax.validation.constraints.Pattern;
    import javax.validation.constraints.Size;
    import org.hibernate.validator.constraints.NotEmpty;
     
    public class PayRequestDto {
         
        /**
         * 支付完成时间
         **/
        @NotEmpty(message="支付完成时间不能空")
        @Size(max=14,message="支付完成时间长度不能超过{max}位")
        private String payTime;
         
        /**
         * 状态
         **/
        @Pattern(regexp = "0[0123]", message = "状态只能为00或01或02或03")
        private String status;
     
        public String getPayTime() {
            return payTime;
        }
     
        public void setPayTime(String payTime) {
            this.payTime = payTime;
        }
     
        public String getStatus() {
            return status;
        }
     
        public void setStatus(String status) {
            this.status = status;
        }
    }
    

    3.定义Validation工具类:

    import java.util.Set;
    
    import javax.validation.ConstraintViolation;
    import javax.validation.Validation;
    import javax.validation.Validator;
    
    import org.hibernate.validator.HibernateValidator;
    
    public class ValidationUtils {
        
        /**
         * 使用hibernate的注解来进行验证
         * 
         */
        private static Validator validator = Validation
                .byProvider(HibernateValidator.class).configure().failFast(true).buildValidatorFactory().getValidator();
    
        /**
         * 功能描述: <br>
         * 〈注解验证参数〉
         *
         * @param obj
         * @see [相关类/方法](可选)
         * @since [产品/模块版本](可选)
         */
        public static <T> void validate(T obj) {
            Set<ConstraintViolation<T>> constraintViolations = validator.validate(obj);
            // 抛出检验异常
            if (constraintViolations.size() > 0) {
                throw new RuntimeException(String.format("参数校验失败:%s", constraintViolations.iterator().next().getMessage()));
            }
        }
    }
    

    4.在代码中调用工具类进行参数校验:

    ValidationUtils.validate(requestDto);
    

    以下是对hibernate-validator中部分注解进行描述:

  • 相关阅读:
    CF1438C Engineer Artem
    Python小程序:向SecureCRT发送命令
    PyInstaller,可将py脚本转换为exe
    在Virtual Box上安装linux系统,启动SSH服务
    Python介绍
    Git使用入门
    字符编码介绍
    适配器模式Adapter、外观模式Facade-- 学习HeadFirst设计模式记录
    复合模式Compound -- 学习HeadFirst设计模式记录
    代理模式Proxy-- 学习HeadFirst设计模式记录
  • 原文地址:https://www.cnblogs.com/alterem/p/11262426.html
Copyright © 2020-2023  润新知