SpringBoot注解验证参数
注解 | 作用类型 | 解释 |
@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 | 时期、时间 | 必须是一个未来的时间或日期 |
字符串 | 必须是一个邮箱格式 | |
@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内容 } } }
越努力越幸运,一起加油吧!