@NotNull和@NonNull的区别和使用
区别
@NotNull在类字段中使用,表示该字段不能为空。它是 JSR303(Bean的校验框架)的注解。在调用controller的方法中加入@Valid就可以验证该方法参数中该类的对应属性是否为空,如果为空,注解中的提示信息会保存在result中。
@NonNull在方法或构造函数的参数上使用,表示该参数不能为空。
@NotNull使用
/*** user类*/
@Data
public class User {private int id;@NotNull(message = "babyId不能为空")private String babyId;
}
/*** controller的方法* controller方法要加上@Valid ,表示需要验证!*/@PostMapping("getMyUser")@ResponseBodypublic Baby getBaby(@Valid @RequestBody User user){return babyService.getBabyById(user.getBabyId());}
此时调用controller的getBaby方法时如果user中babyId为空,那么程序会报MethodArgumentNotValidException
获取错误信息
将上面的getBaby改为下面的例子:
@PostMapping("getMyUser")
@ResponseBody
public Baby getBaby(@Valid @RequestBody User user,Errors errors){List<ObjectError> oes = errors.getAllErrors();for (ObjectError oe : oes) {String key = null;String msg = null;// 字段错误if (oe instanceof FieldError) {FieldError fe = (FieldError) oe;key = fe.getField();// 获取错误验证字段名} else {// 非字段错误key = oe.getObjectName();// 获取验证对象名称}// 错误信息msg = oe.getDefaultMessage();System.out.println("key:"+key+";msg="+msg);}return babyService.getBabyById(user.getBabyId());
}
此时程序不会报错,但是可以获取错误信息:
key:babyId;msg=babyId不能为空
其他注解及解释
除了@NotNull,还有其他类似的注解,都是在类字段上使用
@Null 被注释的元素必须为null
@NotNull 被注释的元素不能为null,可以为空字符串
*@AssertTrue 被注释的元素必须为true
*@AssertFalse 被注释的元素必须为false
*@Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
*@Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
*@DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
*@DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
*@Size(max,min) 被注释的元素的大小必须在指定的范围内。
*@Digits(integer,fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内
*@Past 被注释的元素必须是一个过去的日期
*@Future 被注释的元素必须是一个将来的日期
*@Pattern(value) 被注释的元素必须符合指定的正则表达式。
*@Email 被注释的元素必须是电子邮件地址
*@Length 被注释的字符串的大小必须在指定的范围内
*@Range 被注释的元素必须在合适的范围内
*@NotEmpty:用在集合类上,不能为null,并且长度必须大于0
*@NotBlank:只能作用在String上,不能为null,而且调用trim()后,长度必须大于0
@NonNull使用
@Override
@Transactional
public Baby getBabyById(@NonNull String babyId) {return babyMapper.getBabyById(babyId);
}
如果 babyId 为空getBabyById会报NullPointerException
@NotNull和@NonNull的区别和使用相关推荐
- @NotNull与@NonNull使用笔记
@NotNull与@NonNull使用笔记 @NotNull 一般作用在单独变量上,表示该变量不能为空.一般配合@validation使用,当被@NotNull修饰的变量的值为空时则会抛出错误. @N ...
- 【@NotNull和@NotBlank的区别】
@NotNull和@NotBlank和@NotEmpty的区别 @NotBlank作用在集合上 例如: /*** uuid*/@NotEmpty(message = "uuid不能为空&qu ...
- @NotNull和@NotBlank的区别
@NotNull和@NotBlank和@NotEmpty的区别 @NotEmpty作用在集合上 例: /*** 学生姓名*/@NotEmpty(message = "学生姓名不能为空&quo ...
- @NotBlank、@NotNull 、@NotEmpty的区别
最近在公司写代码遇到了@NotBlank.@NotNull .@NotEmpty三种注解,今天我就总结一下这三种注解的区别. 这三个注解都用来对前端传来的数据进行空值校验,但是用法上会有一点区别: @ ...
- @NotEmpty,@NotNull和@NotBlank的区别
1.@NotNull 不能为null,但可以为empty (""," "," ") 2.@NotEmpty 不能为null,而且长度必须大于 ...
- 表单校验之@NotBlank,@NotNull,@NotEmpty之间的区别
@NotBlank一般用来校验String类型不能为空 @NotNull一般用来校验Integer类型不能为空 @NotEmpty一般用来校验List类型不能为空
- 加在形参上,spring的@NonNull和lombok的@NonNull的区别
Spring的@NonNull spring 的 @Nonnull 一般是加在类的属性上,然后在作为形参时使用 @Validated 进行校验. 今天在代码里看到了将 @NonNull 放在方法的形参 ...
- Java 里 NonNull 和 NotNull 区别
日常码 Java 的时候经常会遇到几个常用的 annotations,经常要用到 @NonNull,@NotNull 以及 @Nonnull.每次用都要查,每次查完又会忘掉,这里特意来总结一下以后用来 ...
- 开发中常见的@NotNull,@NotBlank,@NotEmpty注解的区别
@NotEmpty,@NotNull和@NotBlank的区别 @NotEmpty :不能为null,且Size>0 @NotNull:不能为null,但可以为empty,没有Size的约束 @ ...
最新文章
- Unity3D 中 2D_Toolkit插件下载 和 导入方法
- 决策树算法十问及经典面试问题
- python csv 模块的使用
- VC中使用全局变量的2种办法及防错措施
- 运行配置文件中指定类的指定方法
- 图的广度优先搜索(bfs)以及深度优先搜索(dfs)
- jupyter notebook
- 博士考试考完了,庆祝一下
- [leetcode]Merge Intervals @ Python
- Linux下关于gcc、vim、readelf、rpm、yum、彩色进度条的问题
- 分布式消息规范 OpenMessaging 1.0.0-preview 发布 1
- python生成100个随机数、写入文件后再读取显示内容_Python3 实现随机生成一组不重复数并按行写入文件...
- 2018年四大爬虫代理IP提供商对比
- python api框架 hook_Windows API Hooking in Python
- 2022年版中国石油焦市场运行现状调研与前景动态分析报告
- 微型计算机配置单8000,计算机公共基础知识8000题库答案解析
- Fabric.js 文档
- 6.详解第二代蜂窝移动通信系统的典型代表——GSM和通用分组无线业务(GPRS)
- 编程术语晦涩_晦涩的编程语言的乐趣
- 海报看起来很普通?数字平原概念设计来制作
热门文章
- SQL优化篇:如何成为一位写优质SQL语句的绝顶高手
- 2021-12-10 Linux内核中watchdog,用户层喂狗程序分析
- Django学习笔记(Part1-简介)
- 求质数算法的N种境界
- 如何写好宣传软文?软文推广对企业有什么帮助?
- 2015年站长十大常用工具
- 北京站 Meetup 预告 | 这次我们聊聊 H5、WebAssembly 与 Flutter
- 【Tableau】各类别的商品中销量前十的品牌(子类别排序)
- Vue2.5+Vue-cli3.0+Vue-router仿制京东金融前端页面
- mysql 次方根_MySQL Sqrt()函数