注解 |
作用类型 |
解释 |
@NotNull |
任何类型 |
属性不能为null |
@NotEmpty |
集合 |
集合不能为null,且size大于0 |
@NotBlank |
字符串、字符 |
字符类不能为null,且去掉空格之后长度大于0 |
@AssertTrue |
Boolean、boolean |
布尔属性必须是true |
@Min |
数字类型(原子和包装) |
限定数字的最小值(整型) |
@Max |
同@Min |
限定数字的最大值(整型) |
@DecimalMin |
同@Min |
限定数字的最小值(字符串,可以是小数) |
@DecimalMax |
同@Min |
限定数字的最大值(字符串,可以是小数) |
@Range |
数字类型(原子和包装) |
限定数字范围(长整型) |
@Length |
字符串 |
限定字符串长度 |
@Size |
集合 |
限定集合大小 |
@Past |
时间、日期 |
必须是一个过去的时间或日期 |
@Future |
时期、时间 |
必须是一个未来的时间或日期 |
@Email |
字符串 |
必须是一个邮箱格式 |
@Pattern |
字符串、字符 |
正则匹配字符串 |
public class Test {
@NotNull(message = "ID不能为空")
@Range(min = 1, max = 100, message = "ID必须在1到100之间")
private Integer id;
@NotBlank(message = "姓名不能为空")
@Length(min = 2, max = 6, message = "姓名必须在2到6位之间")
private String name;
@NotNull(message = "余额不能为空")
@DecimalMax(value = "30.50", message = "余额不能超过30.5")
@DecimalMin(value = "1.50", message = "余额不能低于1.5")
private BigDecimal amount;
@NotNull(message = "生日不能为空")
@Past(message = "生日必须是过去")
private Date birthday;
@NotBlank(message = "邮箱不能为空")
@Email(message = "邮箱格式不正确")
private String email;
@NotBlank(message = "手机号不能为空")
@Pattern(regexp = "^(((13[0-9])|(14[579])|(15([0-3]|[5-9]))|(16[6])|(17[0135678])|(18[0-9])|(19[89]))\d{8})$", message = "手机号格式错误")
private String phone;
}
//在web接口处
@RestController
@RequestMapping("/api/v1/student")
public class StudentController{
/**
*
* BindingResult result 一定要跟在 @Validated 注解对象的后面,且当有多个@Validated
* 注解时,每个注解对象后面都需要添加一个
*/
@PostMapping("add")
public ResponseEntity addStudent(@RequestBody @Validated StudentDTO student , BindingResult result){
if(result.hasErrors()){
return new ResponseEntity(result.getFieldError().getDefaultMessage());
//result.getFieldError().getDefaultMessage() 这个方法的内容就是刚刚在DTO处定义的message内容
}
}
}