1.简介
JSR是Java Specification Requests的缩写,意思是Java 规范提案
JSR-303 是JAVA EE 6 中的一项子规范,叫做Bean Validation
即,JSR 303,Bean Validation规范 ,为Bean验证定义了元数据模型和API.。默认的元数据模型是通过Annotations来描述的,但是也可以使用XML来重载或者扩展。
2.常用校验注解
分为两类:Bean Validation 中内置的 constraint
Hibernate Validator 附加的 constraint
Bean Validation 中内置的 constraint
@Null 被注释的元素必须为 null
@NotNull 被注释的元素必须不为 null
@AssertTrue 被注释的元素必须为 true
@AssertFalse 被注释的元素必须为 false
@Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max=, min=) 被注释的元素的大小必须在指定的范围内
@Digits (integer, fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内
@Past 被注释的元素必须是一个过去的日期
@Future 被注释的元素必须是一个将来的日期
@Pattern(regex=,flag=) 被注释的元素必须符合指定的正则表达式
Hibernate Validator 附加的 constraint
@NotBlank(message =) 验证字符串非null,且长度必须大于0
@Email 被注释的元素必须是电子邮箱地址
@Length(min=,max=) 被注释的字符串的大小必须在指定的范围内
@NotEmpty 被注释的字符串的必须非空
@Range(min=,max=,message=) 被注释的元素必须在合适的范围内
3. 使用步骤
3.1 pom坐标(导入依赖)
注意:上面的坐标是规则,下面的坐标是实现,如果只有规则没有实现,则校验规则不会生效
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.2.0.Final</version>
</dependency>
3.2 在需要校验的实体类上加上 @Valid 注解
@GetMapping("/{id}")
public R<AppointmentHelpVo> getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) {
return R.ok(iAppointmentHelpService.queryById(id));
}
3.3 按照需求进行自定义校验规则
/**
* 学生姓名
*/
@NotBlank(message = "学生姓名不能为空", groups = { AddGroup.class, EditGroup.class })
private String name;
/**
* 学生邮箱
*/
@NotBlank(message = "学生邮箱不能为空", groups = { AddGroup.class, EditGroup.class })
@Email(message = "邮箱格式不正确")
private String email;
/**
* 学生微信
*/
@NotBlank(message = "学生微信不能为空", groups = { AddGroup.class, EditGroup.class })
private String wechat;