Service层中使用Hibernate Validator的方法

Service层中使用Hibernate Validator的方法

因为项目的封装基础服务需要对参数校验 一个一个的判空打过与麻烦了 所以就写了一个通用的Service层中使用的Hibernate Validator的方法
通用方法:

import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import javax.validation.ConstraintViolation;
import javax.validation.Validator;
import java.util.List;
import java.util.Set;

/**
 * @description: <br/>
 * 通用Server validation方法
 * <p>
 * <br/>
 * @author: Qz1997
 * @create 2021/2/9 14:41
 */
@SuppressWarnings("unused")
@Component
public final class ValidatorsUtils {
    @Resource
    private Validator validator;

    /**
     * 验证实体
     *
     * @param obj 实体
     * @param <T> 实体类类型
     * @return 结果
     */
    public <T> String valid(T obj) {
        return this.valid(obj, new Class<?>[]{});
    }

    /**
     * 验证实体
     *
     * @param obj   实体
     * @param group 实体组
     * @param <T>   实体类类型
     * @return 结果
     */
    public <T> String valid(T obj, Class<?>... group) {
        Set<ConstraintViolation<T>> violations;
        if (ArrayUtils.isEmpty(group)) {
            violations = validator.validate(obj);
        } else {
            violations = validator.validate(obj, group);
        }
        if (CollectionUtils.isNotEmpty(violations)) {
            for (ConstraintViolation<T> constraintViolation : violations) {
                return constraintViolation.getMessage();
            }
        }
        return null;
    }

    /**
     * 校验list
     *
     * @param objList list
     * @param <T>     实体类类型
     * @return 结果
     */
    public <T> String validList(List<T> objList) {
        return this.validList(objList, new Class<?>[]{});
    }

    /**
     * 校验list
     *
     * @param objList list
     * @param group   组
     * @param <T>     实体类类型
     * @return 结果
     */
    public <T> String validList(List<T> objList, Class<?>... group) {
        if (CollectionUtils.isEmpty(objList)) {
            return "对象空";
        }
        String result;
        for (T t : objList) {
            if (ArrayUtils.isEmpty(group)) {
                result = this.valid(t);
            } else {
                result = this.valid(t, group);
            }
            if (!StringUtils.isBlank(result)) {
                return result;
            }
        }
        return null;
    }
}


实体:

@Data
public class ShowDto extends Show {
    private static final long serialVersionUID = 6389315097268352323L;

    /**
     * 页码
     */
    @Min(value = 1, message = "页码不能小于一", groups = {Query.class})
    @NotNull(message = "页码不能为空", groups = {Query.class})
    private Integer pageNum;
    /**
     * 每页条数
     */
    @Min(value = 1, message = "每页条数不能小于一", groups = {Query.class})
    @NotNull(message = "每页条数不能为空", groups = {Query.class})
    private Integer pageSize;
    /**
     * 开始时间
     */
    @NotBlank(message = "开始时间不能为空", groups = {Query.class})
    private String startTime;
    /**
     * 结束时间
     */
    @NotBlank(message = "开始时间不能为空", groups = {Query.class})
    private String endTime;
	
	/**
     * 查询条件限制
     */
	 public interface Query {}
}

使用:

    @Override
    public Result test(ShowDto showDto) {
        String validResult = validators.valid(showDto, ShowDto.Query.class);
        if (StringUtils.isNotBlank(validResult)) {
            return new Result (ErrorCodeEnum.NO, validResult);
        }
        return new Result (ErrorCodeEnum.OK);
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值