1. 程式人生 > >java bean通過註解實現校驗

java bean通過註解實現校驗

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=)  被註釋的元素必須在合適的範圍內