如何使用自定義註解判斷參數是否爲手機號。

最近在寫接口的時候經常需要判斷傳過來的參數是不是爲手機號。之前都是在每一個接口寫一個判斷。最近寫了一個註解直接可以判斷傳入的參數是不是手機號。

自定義註解

@Target({ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = {MobileValidate.class})
public @interface isMobile {

    String message() default "手機格式不正確";

    Class<?>[] groups() default {};

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

判斷手機號的類

public class MobileValidate implements ConstraintValidator<isMobile, String> {
    private static Pattern pattern = Pattern.compile("^[1][3,4,6,5,7,8,9][0-9]{9}$");

    @Override
    public void initialize(isMobile constraintAnnotation) {

    }

    @Override
    public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {
        Matcher matcher = pattern.matcher(s);
        return matcher.matches();
    }
}

使用方法 CompanyVO 類的一個屬性上加上@isMobile

 @isMobile
    private String linkPhone;

這樣調用接口的時候就會自動判斷companyVO的屬性linkPhone是不是爲手機號了。

   @PostMapping("saveCompany")
    public Response saveCompanyHandler(@Validated CompanyVO companyVO) {
        companyService.saveCompanyHandler(companyVO);
        return Response.success();
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章