前言
前端向后端传参时,后端应对其进行一些判断,如非空等。而SpringBoot提供了相关注解。
常用注解
注解 | 说明 |
---|---|
@Null | 只能为null |
@NotNull | 必须不为null |
@Min(value) | 必须为一个不小于指定值的数字 |
@Max(value) | 必须为一个不大于指定值的数字 |
@NotBlank | 验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的空格 |
@NotEmpty | 验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0) |
@AssertFalse | 必须为false |
@AssertTrue | 必须为true |
@DecimalMax(value) | 必须为一个不大于指定值的数字 |
@DecimalMin(value) | 必须为一个不小于指定值的数字 |
@Digits(integer,fraction) | 必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction |
@Future | 必须是一个将来的日期 |
@Past | 必须是一个过去的日期 |
@Pattern(value) | 必须符合指定的正则表达式 |
@Size(max,min) | 字符长度必须在min到max之间 |
@Pattern(value) | 必须符合指定的正则表达式 |
验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式 |
案例
实体类:
public class OrderSync {
private static final long serialVersionUID = 1L;
/**
* 用户Id
*/
@ApiModelProperty(value = "用户id")
@NotEmpty(message = "用户id不能为空")
private String userId;
/**
* 购买数量
*/
@NotNull(message = "购买数量不能为空")
private Integer quantity;
/**
* 支付时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@NotEmpty(message = "支付时间不能为空")
private LocalDateTime paymentTime;
/**
* 订单状态1、待发货 2、待收货 3、确认收货/已完成 5、已关闭
*/
@Excel(name = "订单状态", readConverterExp = "1=待发货,2=待收货,3=确认收货/已完成 ,5=已关闭")
@NotEmpty(message = "订单状态不能为空")
private String orderStatus;
}
@valid注解
@valid注解主要用于数据校验,可定义在两种地方。
1、定义实体类中的属性上,添加不同的注解来完成不同的校验规则。
2、定义在接口类中,在接收参数前添加@Valid注解,开启实体类的校验功能。
案例
1、实体类中添加@Valid相关注解
单个实体类可只需添加好相应注解:
public class User{
@NotBlank(message = "姓名不为空")
private String username;
@NotBlank(message = "密码不为空")
private String password;
}
但如果是嵌套的实体对象,则需要在最外层属性上添加@Valid注解
public class User{
@NotBlank(message = "姓名不为空")
private String username;
@NotBlank(message = "密码不为空")
private String password;
//嵌套必须加@Valid,否则嵌套中的验证不生效
@Valid
@NotNull(message = "用户信息不能为空")
private UserInfo userInfo;
}
2、定义在接口类中添加@Valid相关注解
@PostMapping(value = "/app/OrderSync")
public OrderSyncResp orderSync(@Valid @RequestBody OrderSyncReq req) {
log.info("OrderSync param:[{}]", JSON.toJSONString(req));
MiGuOrderSyncResp resp = miGuOrderSyncService.orderSync(req);
log.info("OrderSync resp:[{}]", JSON.toJSONString(resp));
return resp;
}