Spring Boot 中@NotNull, @NotEmpty和@NotBlank

简述三者区别

  1. @NotNull://CharSequence, Collection, Map 和 Array 对象不能是 null, 但可以是空集(size = 0)。

  2. @NotEmpty://CharSequence, Collection, Map 和 Array 对象不能是 null 并且相关对象的 size 大于 0。

  3. @NotBlank://String 不是 null 且去除两端空白字符后的长度(trimmed length)大于 0。

注解的定义(在version 4.1中):

1、@NotNull:

定义如下:

@Constraint(validatedBy = {NotNullValidator.class})

这个类中有一个isValid方法是这么定义的:

boolean isValid(Object object, ConstraintValidatorContext constraintValidatorContext) {

return object != null;

}

对象不是null就行,其他的不保证。

2、@NotEmpty:

定义如下

  1. @NotNull

  2. @Size(min = 1)

也就是说,@NotEmpty除了@NotNull之外还需要保证@Size(min=1),这也是一个注解,这里规定最小长度等于1,也就是类似于集合非空。

3、@NotBlank:

  1. @NotNull

  2. @Constraint(validatedBy = {NotBlankValidator.class})

类似地,除了@NotNull之外,还有一个类的限定,这个类也有isValid方法:

  1. if ( charSequence == null ) { //curious

  2. return true;

  3. }

  4. return charSequence.toString().trim().length() > 0;

有意思的是,当一个string对象是null时方法返回true,但是当且仅当它的trimmed length等于零时返回false。即使当string是null时该方法返回true,但是由于@NotBlank还包含了@NotNull,所以@NotBlank要求string不为null。

示例:

  1. String name = null;

  2. @NotNull: false

  3. @NotEmpty: false

  4. @NotBlank: false

  5.  
  6. String name = "";

  7. @NotNull: true

  8. @NotEmpty: false

  9. @NotBlank: false

  10.  
  11. String name = " ";

  12. @NotNull: true

  13. @NotEmpty: true

  14. @NotBlank: false

  15.  
  16. String name = "Great answer!";

  17. @NotNull: true

  18. @NotEmpty: true

  19. @NotBlank: true

彩蛋

 
  1. 一、常用的校验注解

  2. (1)常用标签

  3. @Null 被注释的元素必须为null

  4. @NotNull 被注释的元素不能为null

  5. @AssertTrue 被注释的元素必须为true

  6. @AssertFalse 被注释的元素必须为false

  7. @Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值

  8. @Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值

  9. @DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值

  10. @DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值

  11. @Size(max,min) 被注释的元素的大小必须在指定的范围内。

  12. @Digits(integer,fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内

  13. @Past 被注释的元素必须是一个过去的日期

  14. @Future 被注释的元素必须是一个将来的日期

  15. @Pattern(value) 被注释的元素必须符合指定的正则表达式。

  16. @Email 被注释的元素必须是电子邮件地址

  17. @Length 被注释的字符串的大小必须在指定的范围内

  18. @NotEmpty 被注释的字符串必须非空

  19. @Range 被注释的元素必须在合适的范围内

转自:https://blog.csdn.net/zimuxin/article/details/83746031

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值