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,也可以正常运行。