教程·Hibernate-validator校驗框架 驗證非空參數

先添加依賴

<!-- 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章