先添加依賴
<!-- hibernate校驗框架 -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.3.1.Final</version>
</dependency>
封裝校驗方式,當某個規則校驗失敗時會打印出該字段的message信息
package com.xd.core.common.utils;
import java.util.Set;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import org.hibernate.validator.HibernateValidator;
import com.xd.core.common.commom.exception.DataCheckException;
public class ValidationUtils {
/**
* 使用hibernate的註解來進行驗證
*
*/
private static Validator validator = Validation.byProvider(HibernateValidator.class).configure().failFast(true)
.buildValidatorFactory().getValidator();
/**
* 功能描述: <br>
* 〈註解驗證參數〉
*
* @param obj
* @throws DataCheckException
* @see [相關類/方法](可選)
* @since [產品/模塊版本](可選)
*/
public static <T> void validate(T obj) throws DataCheckException {
Set<ConstraintViolation<T>> constraintViolations = validator.validate(obj);
// 拋出檢驗異常
if (constraintViolations.size() > 0) {
throw new DataCheckException("10000001",
String.format("參數校驗失敗:%s", constraintViolations.iterator().next().getMessage()));
}
}
}
校驗對象
package com.xd.base.service.dto;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.NotBlank;
import com.xd.core.common.base.BaseDto;
public class PaymentRequestDto {
// 支付方式alipay:支付寶,tenpay:財付通,;qqpay:QQ錢包,wxpay:微信支付
@NotNull(message = "支付類型不能爲空")
private Integer payType;
// 商品名稱
@NotBlank(message = "商品名稱不能爲空")
private String name;
/** 以下忽略get/set方法*/
}
使用方式
public String createUcPayUrl(PaymentRequestDto requestDto) throws Exception {
log.info("收到創建uc支付鏈接請求[{}]", requestDto);
ValidationUtils.validate(requestDto);
}
寫個mian方法測試下
public static void main(String[] args) {
try{
PaymentRequestDto dto = new PaymentRequestDto();
//只是new了個對象,未傳值
ValidationUtils.validate(dto);
} catch(Exception e){
e.printStackTrace();
}
}
運行後控制檯打印的信息
詳細教程請戳: https://blog.csdn.net/qq_16605855/article/details/80668990