首先是简要描述:

[java] view plain copy print ?
  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。
@NotNull://CharSequence, Collection, Map 和 Array 对象不能是 null, 但可以是空集(size = 0)。
@NotEmpty://CharSequence, Collection, Map 和 Array 对象不能是 null 并且相关对象的 size 大于 0。
@NotBlank://String 不是 null 且去除两端空白字符后的长度(trimmed length)大于 0。

为了大家更好地理解,下面让我们看下这些注解都是怎么定义的(在version 4.1中):

1、@NotNull:

定义如下:

[java] view plain copy print ?
  1. @Constraint(validatedBy = {NotNullValidator.class})
@Constraint(validatedBy = {NotNullValidator.class})

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

[java] view plain copy print ?
  1. public boolean isValid(Object object, ConstraintValidatorContext constraintValidatorContext) {
  2. return object != null;
  3. }
public boolean isValid(Object object, ConstraintValidatorContext constraintValidatorContext) {return object != null;
}

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

2、@NotEmpty:

定义如下:

[java] view plain copy print ?
  1. @NotNull
  2. @Size(min = 1)
@NotNull
@Size(min = 1)

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

3、@NotBlank:

[java] view plain copy print ?
  1. @NotNull
  2. @Constraint(validatedBy = {NotBlankValidator.class})
@NotNull
@Constraint(validatedBy = {NotBlankValidator.class})

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

[java] view plain copy print ?
  1. if ( charSequence == null ) {  //curious
  2. return true;
  3. }
  4. return charSequence.toString().trim().length() > 0;
if ( charSequence == null ) {  //curious return true;
}
return charSequence.toString().trim().length() > 0;  

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

给大家一些栗子帮助理解记忆:

  1. String name = null;
    @NotNull: false
    @NotEmpty: false
    @NotBlank: false

  2. String name = "";
    @NotNull: true
    @NotEmpty: false
    @NotBlank: false

  3. String name = " ";
    @NotNull: true
    @NotEmpty: true
    @NotBlank: false

  4. String name = "Great answer!";
    @NotNull: true
    @NotEmpty: true
    @NotBlank: true

@NotNull, @NotEmpty和@NotBlank之间的区别是什么?相关推荐

  1. Spring Boot req中@NotNull, @NotEmpty和@NotBlank之间的区别是什么?

    简述三者区别 @NotNull://CharSequence, Collection, Map 和 Array 对象不能是 null, 但可以是空集(size = 0). @NotEmpty://Ch ...

  2. @NotNull, @NotEmpty和@NotBlank之间的区别及示例

    三者之间的区别 `@NotNull:` CharSequence, Collection, Map 和 Array 对象不能是 null, 但可以是空集(size = 0). `@NotEmpty:` ...

  3. notempty注解属于哪个依赖_Spring注解 @NotBlank,@NotNull,@NotEmpty三者之间的区别

    简述三者区别 @NotNull://CharSequence, Collection, Map 和 Array 对象不能是 null, 但可以是空集(size = 0). @NotEmpty://Ch ...

  4. 常用校验注解@NotEmpty,@NotBlank,@NotNull,@Valid,@Validated用法区别,以及搭配 BindingResult使用,嵌套验证等《使用|CSDN创作打卡》

    文章目录 一.常用注解@NotEmpty,@NotBlank,@NotNull介绍 二.@Valid与@Validated的使用与区别 2.1@Valid与@Validated区别: 2.2嵌套验证 ...

  5. @NotNull,@NotEmpty和@NotBlank使用和区别

    实际上关于参数校验我们经常会遇到@NotNull,@NotEmpty和@NotBlank,几乎涉及到校验的工具包都会有它们的身影不管是Hibernate工具包还是Apache的校验工具包或者其他常用的 ...

  6. Spring中@NotEmpty、@NotBlank、@NotNull 区别和使用

    1:引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>sp ...

  7. Spring中@NotEmpty,@NotBlank,@NotNull,@Valid,@Validated注解简介及简单使用

    前言 在开发中,为了代码的稳定性不报空指针异常,经常需要判断前端传过来的值是否为空,为空的话就返回前端值为空的提示,才能进行下一步的操作 Maven依赖的引入: springboot 2.3.0 以后 ...

  8. 校验注解-- @NotNull、@NotEmpty、@NotBlank

    实体字段校验 @NotNull.@NotEmpty.@NotBlank 1.@NotNull:不能为 null,但可以为 empty,一般用在 Integer 类型的基本数据类型的非空校验上,而且被其 ...

  9. 【Java用法】@NotEmpty、@NotBlank、@NotNull注解的使用方法与区别

    以下三个注解均是 javax.validation.constraints 包下的,用于属性上的: @NotEmpty.@NotBlank.@NotNull三种注解的区别 @NotEmpty:用在集合 ...

最新文章

  1. linux yum错误 14: PYCURL ERROR 6 - Couldn't resolve host 'mirrorlist.centos.org'
  2. 2020(广东)功能性农业大健康大会中国农民丰收节交易会
  3. 算法复杂度为O(N) 的排序算法
  4. 状态压缩:枚举子集(最优组队)(ybtoj)(动态规划)
  5. swoole 热重启
  6. AIDL实现不同应用间的通信
  7. assemblyinstaller 无法启动计算机.上的服务,本地计算机上的Windows Search服务启动然后停止 | MOS86...
  8. matlab泰勒 习题,泰勒公式及其应用典型例题
  9. Word2019 插入脚注问题
  10. php怎么求最小公倍数,最小公倍数算法
  11. 「AI产品」产品小姐姐分析抖音背后的计算机视觉技术
  12. 电信获取光猫超级密码
  13. mocc javascript
  14. 桃花院长:怎么找对象?相亲过来人告诉你...
  15. 除法器的实现(恢复余数、不恢复余数、级数展开、Newton-Raphson)
  16. Win7及以上系统自带Windows 光盘映像刻录机
  17. Bert Ertman专访:将Spring及遗留应用迁移到Java EE 6平台
  18. mysql 中文名称排序,mysql 依照中文名称排序
  19. tomcat默认编码问题
  20. 2019年支付寒冬将至,我们如何应对?

热门文章

  1. 《未来网络白皮书——智能互联网白皮书》发布!
  2. 【哪些工作会被ChatGPT取代?】我用ChatGPT全自动化生成代码进行了深度分析
  3. 海鲅S1小白装黑果心得体会
  4. Ubuntu使用教程基础
  5. matlab 流固耦合,一种基于MATLAB-ANSYS软件的静压溜板流固耦合工作性能的计算方法与流程...
  6. MongoDB安装Mac M1
  7. 【Matlab语音识别】电话按键语音识别(含按键录音)【含源码 1752期】
  8. springcloud微服务整合/集成swagger(knife4j-小刀)实现在线文档调试和查看功能
  9. 宝元系统u盘使用说明_宝元系统简易操作指南
  10. LSF_管理软件许可证和其他共享资源