自定义注解(1)、校验手机号

在我们日常工作中,会有这样的需求,假如前端新增、修改数据时,后端要针对手机号格式进行校验 但是框架有没有提供现成的关于手机号校验的注解,如果写在业务层里,无异于会增加代码的复杂度,综上考虑,使用自定义注解是比较方便且高效的

注解代码:

@Documented
@Constraint(validatedBy = PhoneValidator.class)
@Target({ ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER })
@Retention(RetentionPolicy.RUNTIME)
public @interface Phone {

    String message() default "手机号格式不正确";

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

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

}

手机号校验业务处理:

public class PhoneValidator implements ConstraintValidator<Phone, CharSequence> {

    private Pattern pattern;

    @Override
    public void initialize(Phone constraintAnnotation) {
        // 这里可以获取注解的属性,如果有需要的话
        // 比如正则表达式可以从注解中读取
        pattern = Pattern.compile("^1[3-9]\\d{9}$");
    }

    @Override
    public boolean isValid(CharSequence value, ConstraintValidatorContext context) {
        if (value == null) {
            return true;
        }
        return pattern.matcher(value).matches();
    }

}

实体类使用:

@Data
public class EnterpriseAddParam {

    @ApiModelProperty(value = "联系人手机号码", example = "联系人手机号码")
    @NotBlank(message = "联系人手机号码不能为空")
    @Length(max = 20, message = "联系人手机号码过长,不能超过20个字符")
    @Phone
    private String contactPhoneNumber;

}

控制层:

@PostMapping("add")
@ApiOperation(value = "新增企业", notes = "新增企业")
public void add(@RequestBody @Validated EnterpriseAddParam param) {
    charitableOrgBusinessWriteService.addEnterprise(param, getCurUserAccount());
}
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只鸟儿

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值