Hibernate-validator校验框架 验证非空参数

发布时间:2022-03-01 13:13:47 作者:yexindonglai@163.com 阅读(1357)

先添加依赖

  1. <!-- hibernate校验框架 -->
  2. <dependency>
  3. <groupId>org.hibernate</groupId>
  4. <artifactId>hibernate-validator</artifactId>
  5. <version>4.3.1.Final</version>
  6. </dependency>

封装校验方式,当某个规则校验失败时会打印出该字段的message信息

  1. package com.xd.core.common.utils;
  2. import java.util.Set;
  3. import javax.validation.ConstraintViolation;
  4. import javax.validation.Validation;
  5. import javax.validation.Validator;
  6. import org.hibernate.validator.HibernateValidator;
  7. import com.xd.core.common.commom.exception.DataCheckException;
  8. public class ValidationUtils {
  9. /**
  10. * 创建校验对象,只要校验出一个未匹配的属性,立即停止校验并且返回空值的属性message,
  11. *
  12. */
  13. private static Validator validator = Validation.byProvider(HibernateValidator.class).configure().failFast(true)
  14. .buildValidatorFactory().getValidator();
  15. //创建校验对象 ,校验出全部未匹配的属性,两种创建方式取一种即可,
  16. //private static Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
  17. /**
  18. * 功能描述: <br>
  19. * 〈注解验证参数〉
  20. *
  21. * @param obj
  22. * @throws DataCheckException
  23. * @see [相关类/方法](可选)
  24. * @since [产品/模块版本](可选)
  25. */
  26. public static <T> void validate(T obj) throws DataCheckException {
  27. Set<ConstraintViolation<T>> constraintViolations = validator.validate(obj);
  28. // 抛出检验异常
  29. if (constraintViolations.size() > 0) {
  30. throw new DataCheckException("10000001",
  31. String.format("参数校验失败:%s", constraintViolations.iterator().next().getMessage()));
  32. }
  33. }
  34. }

校验对象

  1. package com.xd.base.service.dto;
  2. import javax.validation.constraints.NotNull;
  3. import org.hibernate.validator.constraints.NotBlank;
  4. import com.xd.core.common.base.BaseDto;
  5. public class PaymentRequestDto {
  6. // 支付方式alipay:支付宝,tenpay:财付通,;qqpay:QQ钱包,wxpay:微信支付
  7. @NotNull(message = "支付类型不能为空")
  8. private Integer payType;
  9. // 商品名称
  10. @NotBlank(message = "商品名称不能为空")
  11. private String name;
  12. /** 以下忽略get/set方法*/
  13. }

使用方式

  1. public String createUcPayUrl(PaymentRequestDto requestDto) throws Exception {
  2. log.info("收到创建uc支付链接请求[{}]", requestDto);
  3. ValidationUtils.validate(requestDto);
  4. }

 写个mian方法测试下

  1. public static void main(String[] args) {
  2. try{
  3. PaymentRequestDto dto = new PaymentRequestDto();
  4. //只是new了个对象,未传值
  5. ValidationUtils.validate(dto);
  6. } catch(Exception e){
  7. e.printStackTrace();
  8. }
  9. }

运行后控制台打印的信息

详细教程请戳: https://blog.csdn.net/qq_16605855/article/details/80668990

关键字Java