• hibernate validater


    1、bean定义时,在需要校验的field加上校验的注解

     1 package entrance;
     2 
     3 import javax.validation.constraints.Max;
     4 import javax.validation.constraints.Pattern;
     5 
     6 public class Bean
     7 {
     8     /**
     9      * 支付完成时间
    10      **/
    11     @Max(value = 14, message = "max val is 14")
    12     private Integer payTime;
    13 
    14     /**
    15      * 状态
    16      **/
    17     @Pattern(regexp = "0[0123]", message = "状态只能为00或01或02或03")
    18     private String status;
    19 
    20     public Integer getPayTime() {
    21         return payTime;
    22     }
    23 
    24     public void setPayTime(Integer payTime) {
    25         this.payTime = payTime;
    26     }
    27 
    28     public String getStatus() {
    29         return status;
    30     }
    31 
    32     public void setStatus(String status) {
    33         this.status = status;
    34     }
    35 }

    2、添加hibernate-validater依赖

        <dependency>
          <groupId>org.hibernate</groupId>
          <artifactId>hibernate-validator</artifactId>
          <version>4.3.2.Final</version>
        </dependency>
        <dependency>
          <groupId>javax.validation</groupId>
          <artifactId>validation-api</artifactId>
          <version>1.1.0.Final</version>
        </dependency>

    3、增加校验工具类

    package entrance;
    
    import java.util.Set;
    import javax.validation.ConstraintViolation;
    import javax.validation.Validation;
    import javax.validation.Validator;
    import org.hibernate.validator.HibernateValidator;
    
    public class HibernateValidater
    {
        //快速失败模式,只要有一个验证失败就返回失败
        private static Validator validator = Validation
            .byProvider(HibernateValidator.class).configure().failFast(true).buildValidatorFactory().getValidator();
    
        public static <T> void validate(T objToBeValidate) throws Exception
        {
            Set<ConstraintViolation<T>> constraintViolations = validator.validate(objToBeValidate);
    
            // 抛出检验异常
            if (constraintViolations.size() > 0)
            {
                throw new Exception(constraintViolations.iterator().next().getMessage());
            }
        }
    }

    4、手动or通过aop触发校验

    package entrance;
    
    public class Main
    {
        public static void main(String[] args) throws Exception
        {
            Bean bean = new Bean();
            bean.setPayTime(15);
            bean.setStatus("00");
            HibernateValidater.validate(bean);
    
            bean.setStatus("01");
            HibernateValidater.validate(bean);
    
            bean.setStatus("02");
            HibernateValidater.validate(bean);
    
            bean.setStatus("03");
            HibernateValidater.validate(bean);
    
    
        }
    }
  • 相关阅读:
    RK3399之时钟
    C之{}注意点
    ARM之不用段寄存猜想
    linux驱动之入口
    android之HAL
    git
    消息中间之ActiveMQ
    Maven之阿里云镜像仓库配置
    清理Oracle临时表空间
    Tomcat控制台日志输出到本地文件
  • 原文地址:https://www.cnblogs.com/huoxiayu/p/9091552.html
Copyright © 2020-2023  润新知