validator 基于hibernate实现灵活验证

注解实体类

@Data
public class OrderDemandDTO implements DtoConverter<OrderDemand> {

    private Integer id;

    @NotNull(message = "订单ID不能为空")
    private Integer orderId;

    private Integer destinationCity;
    private String destinationCityName;

    @NotNull(message = "预定城市不能为空")
    private Integer bookingCity;
    private String bookingCityName;

    @NotNull(message = "出发城市不能为空")
    private Integer tripCity;
    private String tripCityName;


    private Integer minTravelDay;//最小出游天数

    private Integer maxTravelDay;//最大出游天数

    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date startTravelDate;//开始出游日期

    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date endTravelDate;//结束出游日期

    private BigDecimal minProductPrice;//产品起价-最小价格

    private BigDecimal maxProductPrice;//产品起价-最大价格

    @EnumValid(enumClass = SingleRoomPlanEnum.class, message = "单房差方案有误")
    private String singleRoomPlan;
    private String singleRoomPlanName;

    @Override
    public void covertEntity2Dto(OrderDemand orderDemand) {
        MyBeanUtils.copyProperties(orderDemand, this);
        if(StringUtils.isNotBlank(this.singleRoomPlan)) this.singleRoomPlanName = SingleRoomPlanEnum.valueOf(this.singleRoomPlan).getName();
    }

    @Override
    public void covertDto2Entity(OrderDemand orderDemand) {
        MyBeanUtils.copyProperties(this, orderDemand);
    }

校验类

public class MyValidator {

    static ValidatorFactory vf = Validation.buildDefaultValidatorFactory();
    static Validator validator = vf.getValidator();

    /**
     * 使用Validator校验注解
     * @param param
     */
    public static void checkParams(Object param){
        checkParams(param, Default.class);
    }

    /**
     * 分组校验
     * @param param
     * @param groups
     */
    public static void checkParams(Object param, Class<?>... groups){
        Set<ConstraintViolation<Object>> set = validator.validate(param, groups);
        for (ConstraintViolation<Object> constraintViolation : set) {
            throw new MySystemException(SystemErrorEnum.BAD_REQUEST, constraintViolation.getMessage());
        }
    }
}

调用方法:

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