Service层中使用Hibernate Validator的方法

Service层中使用Hibernate Validator的方法

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

import org.apache.commons.collections.CollectionUtils;
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: zhangqi
 * @create 2021/2/9 14:41
 */
@Component
public class Validators {
    @Resource
    private Validator validator;

    /**
     * 验证实体
     *
     * @param obj 实体
     * @param <T> 实体类类型
     * @return 结果
     */
    @SuppressWarnings("unused")
    public <T> String valid(T obj) {
        return this.valid(obj, null);
    }

    /**
     * 验证实体
     *
     * @param obj   实体
     * @param group 实体组
     * @param <T>   实体类类型
     * @return 结果
     */
    public <T> String valid(T obj, Class<?> group) {
        Set<ConstraintViolation<T>> violations;
        if (group == null) {
            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 结果
     */
    @SuppressWarnings("unused")
    public <T> String validList(List<T> objList) {
        return this.validList(objList, null);
    }

    /**
     * 校验list
     *
     * @param objList list
     * @param group   组
     * @param <T>     实体类类型
     * @return 结果
     */
    public <T> String validList(List<T> objList, Class<?> group) {
        if (CollectionUtils.isEmpty(objList) || objList.size() <= 0) {
            return "对象空";
        }
        String result;
        for (T t : objList) {
            if (group == null) {
                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);
    }

猜你喜欢

转载自blog.csdn.net/weixin_43939924/article/details/113781682