java bean通過註解實現校驗
阿新 • • 發佈:2019-01-26
1、引入需要的jar包
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.4.1.Final</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId> validation-api</artifactId>
<version>1.1.0.Final</version>
</dependency>
2、封裝工具類
import java.util.Set;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.ValidationException;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
public class ValidationUtil {
private static Validator validator;
static {
ValidatorFactory vf = Validation.buildDefaultValidatorFactory();
validator = vf.getValidator();
}
public static <T> void validate(T t) throws ValidationException {
Set<ConstraintViolation<T>> set = validator.validate(t);
if (set.size() > 0) {
StringBuilder validateError = new StringBuilder();
for (ConstraintViolation<T> val : set) {
validateError.append(val.getMessage() + " ;");
}
throw new ValidationException(validateError.toString());
}
}
}
3、在對應的實體類中,給需要進行校驗的實體新增相應的註解
@Size(min = 1,message = "名稱不能為空!")
@NotNull(message = "名稱不能為空!")
private String biddingName;
4、在實現類中呼叫即可
@Override
public Response saveBidding(PurchaseBiddingHeaderVO headerVO) {
try {
ValidationUtil.validate(headerVO);
.
.
.
} catch(ValidationException e){
e.printStackTrace();
//返回校驗結果給前臺
return getErrorResponse(ResponseCodeEnum.ERROR.getValue(), e.getMessage());
}catch (Exception e) {
e.printStackTrace();
throw new RuntimeException();
}
常用註解列表
@Null 被註釋的元素必須為 null
@NotNull 被註釋的元素必須不為 null
@AssertTrue 被註釋的元素必須為 true
@AssertFalse 被註釋的元素必須為 false
@Min(value) 被註釋的元素必須是一個數字,其值必須大於等於指定的最小值
@Max(value) 被註釋的元素必須是一個數字,其值必須小於等於指定的最大值
@DecimalMin(value) 被註釋的元素必須是一個數字,其值必須大於等於指定的最小值
@DecimalMax(value) 被註釋的元素必須是一個數字,其值必須小於等於指定的最大值
@Size(max=, min=) 被註釋的元素的大小必須在指定的範圍內
@Digits (integer, fraction) 被註釋的元素必須是一個數字,其值必須在可接受的範圍內
@Past 被註釋的元素必須是一個過去的日期
@Future 被註釋的元素必須是一個將來的日期
@Pattern(regex=,flag=) 被註釋的元素必須符合指定的正則表示式
//Hibernate Validator 附加的 constraint
@NotBlank(message =) 驗證字串非null,且長度必須大於0
@Email 被註釋的元素必須是電子郵箱地址
@Length(min=,max=) 被註釋的字串的大小必須在指定的範圍內
@NotEmpty 被註釋的字串的必須非空
@Range(min=,max=,message=) 被註釋的元素必須在合適的範圍內