使用参数校验Java Bean Validation 规范可以直接引入上面这个starter依赖
这个依赖里面有hibernate-validator依赖,而hibernate-validator依赖里面有jakarta.validation-api依赖
其中
hibernate-validator:实现验证器
jakarta.validation-api:提供验证器的API
像@size ,@NotNull ,@Pattern等等都是jakarta.validation-api提供的
下面说说一般常用的校验性注解:
@size:限制各种数据结构的长度
@NotNull:一般用于基本数据类型和包装类,要求值不能为null,但可以为空(如长度为0的字符串)。
@NotBlank:主要用于字符串类型,要求值不能为null且不能只包含空白字符。
@NotEmpty:注解用于集合类、字符串、数组等类型,要求值不能为null且大小必须大于0。
@Email:验证一个字段是否符合电子邮件地址的格式
@Pattern:验证字段值是否符合正则表达式的模式
@CreditCardNumber:校验信用卡格式
@BIC:校验有效的银行识别码(BIC码),例如,中国银行的BIC代码是"BKCHCNBJS"
@Locale:校验地区代码,例如,中国大陆:CN,香港:HK等
@Charset:校验符合规定字符集编码
这些注解通常用在方法参数上,以便在方法执行前对参数进行验证。如果验证失败,将会抛出ConstraintViolationException异常。此外,这些注解也可以用在字段上,以便在Bean创建时对字段进行验证。
@Size(min = 0, max = 30,message = "用户账号长度不能超过30个字符")
public String getUsername() {
return username;
}
@NotNull(message = "密码不能为空")
public String getPassword() {
return password;
}
@Size(min = 0, max = 11, message = "联系电话长度不能超过11个字符")
@Pattern(regexp = ValidationConstants.PHONE_PATTERN, message = "手机号码不符合规范")
public String getPhone() {
return phone;
}
@Email(message = "邮箱格式不正确")
@Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符")
public String getEmail() {
return email;
}
@Size(max = 18, message = "身份证号不能大于18位")
@Pattern(regexp = ValidationConstants.ID_CARD_PATTERN, message = "身份证号码不符合规范")
public String getCardId() {
return cardId;
}
@NotBlank(message = "岗位编码不能为空")
@Size(min = 0, max = 64, message = "岗位编码长度不能超过64个字符")
public String getPostCode() {
return postCode;
}
@CreditCardNumber(message = "信用卡号的格式不正确")
private String cardNumber;
@BIC(message = "请输入有效的BIC码")
private String bankBIC;
@Locale(message = "请输入有效的区域代码")
private String preferredLocale;
@Charset(charset = "UTF-8", message = "字符集编码必须为UTF-8")
private String textContent;