zoukankan      html  css  js  c++  java
  • Hibernate Validator数据校验框架常用注释

    使用前先配置maven,加入依赖:

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

     

    常用的注解:

    注解

    作用

    @Valid

    被注释的元素是一个对象,需要检查此对象的所有字段值

    @Null

    被注释的元素必须为 null

    @NotNull

    被注释的元素必须不为 null, 任何对象的value不能为null,适用于所有对象,用于8种基本数据类型是无效的

    @AssertTrue

    被注释的元素必须为 true

    @AssertFalse

    被注释的元素必须为 false

    @Min(value)

    被注释的元素必须是一个数字,其值必须大于等于指定的最小值

    @Max(value)

    被注释的元素必须是一个数字,其值必须小于等于指定的最大值

    @DecimalMin(value)

    被注释的元素必须是一个数字,其值必须大于等于指定的最小值

    @DecimalMax(value)

    被注释的元素必须是一个数字,其值必须小于等于指定的最大值

    @Size(max, min)

    被注释的元素的大小必须在指定的范围内

    @Digits (integer, fraction)

    被注释的元素必须是一个数字,其值必须在可接受的范围内

    @Past

    被注释的元素必须是一个过去的日期

    @Future

    被注释的元素必须是一个将来的日期

    @Pattern(value)

    被注释的元素必须符合指定的正则表达式

    @Email

    被注释的元素必须是电子邮箱地址

    @Length(min=, max=)

    被注释的字符串的大小必须在指定的范围内

    @NotEmpty

    被注释的字符串的必须非空,集合对象的元素不为0,即集合不为空,也可以用于字符串不为null

    适用于String, collection, map or array,不允许是null而且不允许为empty(即长度不能为0)

    @Range(min=, max=)

    被注释的元素必须在合适的范围内

    @NotBlank

    被注释的字符串的必须非空,只能用于字符串不为null,并且字符串trim()以后length要大于0 

    示例:

    String name = null;
    @NotNull: false
    @NotEmpty: false
    @NotBlank: false
    
    String name = "";
    @NotNull: true
    @NotEmpty: false
    @NotBlank: false
    
    String name = " ";
    @NotNull: true
    @NotEmpty: true
    @NotBlank: false
    
    String name = "Great answer!";
    @NotNull: true
    @NotEmpty: true
    @NotBlank: true
    

     

     

    JavaBean实例:

    public class DemoBean {
    
        @NotNull(message = "姓名不能为空!")
        @Min(value = 1, message = "Id只能大于等于1,小于等于10")
        @Max(value = 10, message = "Id只能大于等于1,小于等于10")
        private Integer id;
    
        @NotNull(message = "姓名不能为空!")
        @Size(min = 2, max = 4, message = "姓名长度必须在{min}和{max}之间")
        @Pattern(regexp = "[u4e00-u9fa5]+", message = "名称只能输入是中文字符")
        private String userName;
    
        @NotNull(message = "密码不能为空!")
        @Size(min = 6, max = 12, message = "密码长度必须在{min}和{max}之间")
        private String passWord;
    
        @NotNull(message = "日期不能为空!")
        @Past(message = "你只能输入过去的日期")
        private Date birthday;
    
        @NotNull(message = "邮件不能为空!")
        @Email(message = "邮件格式不正确")
        private String email;
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getUserName() {
            return userName;
        }
    
        public void setUserName(String userName) {
            this.userName = userName;
        }
    
        public String getPassWord() {
            return passWord;
        }
    
        public void setPassWord(String passWord) {
            this.passWord = passWord;
        }
    
        public Date getBirthday() {
            return birthday;
        }
    
        public void setBirthday(Date birthday) {
            this.birthday = birthday;
        }
    
        public String getEmail() {
            return email;
        }
    
        public void setEmail(String email) {
            this.email = email;
        }
    }
    

      

    方法中的实例:

    @NotNull(message = "返回值不能为空") 
     public User getUserInfoById(@NotNull(message = "不能为空") Integer id,String message){
    return null;
    }
    

      

    Validator工具类:

    import java.util.Set;
    import javax.validation.ConstraintViolation;
    import javax.validation.Validation;
    import javax.validation.Validator;
    import org.hibernate.validator.HibernateValidator;
    import com.atai.framework.lang.AppException;
    
    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 AppException("0001", String.format("参数校验失败:%s", constraintViolations.iterator().next().getMessage()));
            }
        }
    }
    

      Validator工具类代码调用实例:

    ValidationUtils.validate(DemoBean);
    

      

  • 相关阅读:
    REDELK的安装和使用
    Palo Alto GlobalProtect上的PreAuth RCE
    渗透 Facebook 的思路与发现
    抓取腾讯视频MP4文件
    JS中整数的取整、取余、向上取整
    centos7安装docker
    业界难题-“跨库分页”的四种方案(转)
    centos7设置时间
    简单实现Shiro单点登录(自定义Token令牌)
    nginx 反向代理时丢失端口的解决方案(转)
  • 原文地址:https://www.cnblogs.com/LingCoder/p/9272083.html
Copyright © 2011-2022 走看看