美文网首页工作中源代码学习
Java+Hibernate校验java请求vo实体

Java+Hibernate校验java请求vo实体

作者: ___TheOne___ | 来源:发表于2018-05-24 16:58 被阅读28次

    1.前景

    Vo实体添加标签@NotBlank或@Pattern灵活配置,灵活校验。通用处理代码,减少大量校验代码的书写,提高开发效率。

    2.代码使用

    学生实体:

    package jdk.ValidateVo;
    
    import jdk.ValidateVo.customAnnotation.Money;
    import org.hibernate.validator.constraints.NotBlank;
    
    import javax.validation.Valid;
    import javax.validation.constraints.NotNull;
    import javax.validation.constraints.Pattern;
    import java.util.List;
    
    /**
     * Created by JadenOliver on 2018/5/21.
     */
    public class StudentInfo {
    
        @NotBlank(message="用户名不能为空")
        private String userName;
    
        @NotBlank(message="年龄不能为空")
        @Pattern(regexp="^[0-9]{1,2}$",message="年龄是整数")
        private String age;
    
        /**
         * 如果是空,则不校验,如果不为空,则校验
         */
        @Pattern(regexp="^[0-9]{4}-[0-9]{2}-[0-9]{2}$",message="出生日期格式不正确")
        private String birthday;
    
        @NotBlank(message="学校不能为空")
        private String school;
    
        @NotNull
        @Money  //自定义注解,自定义校验方式。
        //@Pattern(regexp = "^\\d+\\.\\d{1,2}?$", message = "金额格式不正确")  //说明:@Pattern只能用在String上,否则报异常:No validator could be found for type: java.lang.Double
        private Double money;
    
        @Valid   //亲测:如果不在关联属性上设置@Valid标签,便不会校验关联实体的属性值。
        private List<ParentVo> parents;  //关联实体校验
    
        public String getUserName() {
            return userName;
        }
    
        public void setUserName(String userName) {
            this.userName = userName;
        }
    
        public String getAge() {
            return age;
        }
    
        public void setAge(String age) {
            this.age = age;
        }
    
        public String getBirthday() {
            return birthday;
        }
    
        public void setBirthday(String birthday) {
            this.birthday = birthday;
        }
    
        public String getSchool() {
            return school;
        }
    
        public void setSchool(String school) {
            this.school = school;
        }
    
        public Double getMoney() {
            return money;
        }
    
        public void setMoney(Double money) {
            this.money = money;
        }
    
        public List<ParentVo> getParents() {
            return parents;
        }
    
        public void setParents(List<ParentVo> parents) {
            this.parents = parents;
        }
    }
    

    具体代码参见:

    代码结构:Java+Hibernate利用标签校验Vo:
    1>简单校验;@NotBlank、@NotNull、@Pattern使用
    2>自定义注解和校验规则;@Money使用
    3>关联实体属性校验。@Valid使用

    3.注意点:

    1.Integer、Double数据类型,即非String字符串类型,只能添加@NotNull,否则会报javax.validator not found for Integer异常。
    2.关联实体校验,需要在关联实体属性上添加@Valid标签。关联实体如果是一个List,也可以正常运行。

    4.参考资料

    java使用validator进行校验

    相关文章

      网友评论

        本文标题:Java+Hibernate校验java请求vo实体

        本文链接:https://www.haomeiwen.com/subject/mybsjftx.html