ManualValidatorObject 手动校验对象实体属性

147 阅读1分钟

import com.megvii.performance.common.exception.CommonException;
import org.springframework.util.CollectionUtils;

import javax.validation.ConstraintViolation;
import javax.validation.Valid;
import javax.validation.Validation;
import java.util.Set;

/**
 * @创建人 sunkui
 * @创建日期 2020/5/12
 * @描述  手动校验对象实体属性
 */
public class ManualValidatorObject<T> {


    /**
     * 校验实体对象
     *
     * @param t            校验对象
     * @param clazz        类校验分组,可以不传
     * @param replaceFiled 替换字段
     */
    public void validateEntityData(T t, Object[] replaceFiled, Class<?>... clazz) {
        Set<ConstraintViolation<@Valid T>> validateSet = Validation.buildDefaultValidatorFactory()
                .getValidator()
                .validate(t, clazz == null ? new Class[0] : clazz);
        if (!CollectionUtils.isEmpty(validateSet)) {
            String messages = validateSet.stream()
                    .map(ConstraintViolation::getMessage)
                    .sorted()
                    .limit(1)
                    .reduce((m1, m2) -> m1 + ";" + m2)
                    .orElse("参数输入有误!");
            throw new CommonException(String.format(messages, replaceFiled));
        }
    }

}