【SpringBoot】常用注解, @NotNull,@NotBlank,@Valid注解

前言

前端向后端传参时,后端应对其进行一些判断,如非空等。而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 验证注解的元素值是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;
	}

猜你喜欢

转载自blog.csdn.net/someday____/article/details/128395263
今日推荐