最近在写接口的时候经常需要判断传过来的参数是不是为手机号。之前都是在每一个接口写一个判断。最近写了一个注解直接可以判断传入的参数是不是手机号。
自定义注解
@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();
}