@NotNull @NotBlank @NotEmpty区别和使用

1. @NotNull

javax.validation.constraints.NotNull;

使用@NotNull注解, 则注解元素不能为null, 接收任何数据类型。
适用于基本数据类型(Integer、Long、Double等)。 使用在String类型时, 表示改元素不能为null, 但可以为empty(比如空字符串)

2. @NotBlank

javax.validation.constraints.NotBlank;

使用@NotBlank注解,则注解元素不能为null, 并且必须包含一个非空白字符(即非null, 并且trim()后size > 0),接收CharSequence

适用于String类型, 要求注解元素 非null && size > 0

3. @NotEmpty

javax.validation.constraints.NotEmpty;

使用@NotEmpty注解,则注解元素不能为null 或 empty, 接收CharSequence、Collection、Map、Array

适用于String、Collection、Map、Array, 要求注解元素非null && size > 0

4. 注解使用

定义一个用户新增方法, 校验指定参数

DTO

package com.donico.demo.domain.dto;

import java.util.List;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import lombok.Data;
import lombok.experimental.Accessors;

@Data
@Accessors(chain = true)
public class UserAddDto {

  /**
   * 用户名
   */
  @NotBlank(message = "用户名不能为空")
  private String username;

  /**
   * 密码
   */
  @NotBlank(message = "密码不能为空")
  private String password;

  /**
   * 昵称
   */
  @NotBlank(message = "昵称不能为空")
  private String nickname;

  /**
   * 手机号
   */
  @NotBlank(message = "手机号不能为空")
  private String mobile;

  /**
   * 状态: 1=启用,2=禁用
   */
  @NotNull(message = "状态不能为空")
  private Integer state;

  /**
   * 标签ids
   */
  @NotEmpty(message = "标签不能为空")
  private List<Long> labelIds;

  /**
   * 描述
   */
  private String desc;

}

Controller

这些校验注解需要@Valid 或 @Validated 配合使用才会生效

  import javax.validation.Valid;
  /**
   * 添加用户
   */
  @PostMapping("/add")
  public User addUser(@RequestBody() @Valid UserAddDto addDto) {
    // todo
  }



  import org.springframework.validation.annotation.Validated;
  /**
   * 添加用户
   */
  @PostMapping("/add")
  public User addUser(@RequestBody() @Validated UserAddDto addDto) {
    // todo
  }

@Valid和@Validated区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值