一文说说自定义注解实现校验

一文说说自定义注解实现校验_第1张图片

自定义注解部分

/**
 * @author 舒一笑
 * @version 1.0.0
 * @ClassName OvertimePlaceConver.java
 * @Description 加班地址转化
 * @createTime 2023年10月24日 22:22:00
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = OvertimePlaceConvertValidator.class)
public @interface OvertimePlaceConvert {

    /**
     * 加班地点,默认在公司
     * 0:公司。1:家里。2:客户现场。3:其他
     * @return
     */
    int overtimeLocation() default 0;
    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};


}

自定义注解逻辑处理类部分

/**
 * @author 舒一笑
 * @version 1.0.0
 * @ClassName OverValidator.java
 * @Description 加班地址转化逻辑处理类
 * @createTime 2023年10月24日 22:24:00
 */
public class OvertimePlaceConvertValidator implements ConstraintValidator<OvertimePlaceConvert,Object> {

    private Integer overtimeLocation;

    @Override
    public void initialize(OvertimePlaceConvert constraintAnnotation) {
        overtimeLocation = constraintAnnotation.overtimeLocation();
        ConstraintValidator.super.initialize(constraintAnnotation);
    }


    @Override
    public boolean isValid(Object o, ConstraintValidatorContext constraintValidatorContext) {

        if (o == null){
            return true;
        }
        /**
         * 逻辑转化处理
         * 公司。1:家里。2:客户现场。3:其他
         */
        if (o instanceof Integer){
            String overtimePlaceConvert = OvertimePlaceConvert(overtimeLocation);
            if (overtimePlaceConvert != null){
                return true;
            }
        }

        return false;
    }

    public String OvertimePlaceConvert(Integer number){
        // 最终的加班地点
        String overtimeLocation = null;
        if (number.doubleValue() == 0){
            overtimeLocation = "公司";
        } else if (number.doubleValue() == 1) {
            overtimeLocation = "家里";
        } else if (number.doubleValue() == 2) {
            overtimeLocation = "客户现场";
        } else if (number.doubleValue() == 3) {
            overtimeLocation = "其他";
        }

        return overtimeLocation;
    }
}

你可能感兴趣的:(SpringBoot,1024程序员节,Java自定义注解)