Redian新闻
>
Spring 中 @NotEmpty、@NotBlank、@NotNull,傻傻分不清楚!

Spring 中 @NotEmpty、@NotBlank、@NotNull,傻傻分不清楚!

公众号新闻

点击关注公众号,Java干货及时送达👇

1:引入依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>2.0.5.RELEASE</version>
</dependency>

@NotEmpty、@NotBlank、@NotNull 包的位置:import javax.validation.constraints.*;

2:区别

@NotNull

适用于基本数据类型(Integer,Long,Double等等),当 @NotNull 注解被使用在 String 类型的数据上,则表示该数据不能为 Null(但是可以为 Empty)

注:被其标注的字段可以使用 @size、@Max、@Min 对字段数值进行大小的控制

@NotBlank

适用于 String 类型的数据上,加了@NotBlank 注解的参数不能为 Null 且 trim() 之后 size > 0,必须有实际字符

@NotEmpty

适用于 String、Collection集合、Map、数组等等,加了@NotEmpty 注解的参数不能为 Null 或者 长度为 0

3:使用方法

@Data
public class BigPeople {
    @ApiModelProperty(value = "id" ,required = true)
    @NotNull(message = "id不能为空")
    @Length(message = "id不能超过{max}个长度",max = 10)
    private Integer id;
 
    @ApiModelProperty(value = "name" ,required = true)
    @NotBlank(message = "name不能为空")
    @Size(message = "名字最长为{max} 个字",max = 10)
    private String name;
 
    @ApiModelProperty(value = "age" ,required = true)
    @NotNull(message = "id不能为空")
    @Range(message = "age的长度范围为{min}岁到{max}岁之间",min = 5,max = 10)
    private Integer age;
 
    @ApiModelProperty(value = "treeNode" ,required = true)
    @NotEmpty(message = "treeNode不能为空")
    private List<String> treeNode;
    
}

@Valid 包位置:

import javax.validation.Valid;

@Validated 包的位置

import org.springframework.validation.annotation.Validated;
@ApiOperation(value = "新增或者修改一个人的信息")
@PostMapping("/updateOrInsert")
public Result updateOrInsert(@Valid @RequestBody  Person person){
    Boolean updateOrInsert = personService.updateOrInsert(person);
    if (updateOrInsert) {
        return new Result(ResultCode.SUCCESS,updateOrInsert);
    }
   return new Result(ResultCode.ERROR, "新增或者修改一个人的信息失败");
}

@ApiOperation(value = "新增或者修改一个人的信息")
@PostMapping("/updateOrInsert")
public Result updateOrInsert(@Validated @RequestBody  Person person){
    Boolean updateOrInsert = personService.updateOrInsert(person);
    if (updateOrInsert) {
        return new Result(ResultCode.SUCCESS,updateOrInsert);
    }
   return new Result(ResultCode.ERROR, "新增或者修改一个人的信息失败");
}

最上面三个注释:必须需要搭配@Valid 或者@Validated使用,在检验Controller的入参是否符合规范时

@Valid 和 @Validated 比较

最后我们来对 @Valid 和 @Validated 两个注解进行总结下:

1:@Valid 和 @Validated 两者都可以对数据进行校验,待校验字段上打的规则注解(@NotNull, @NotEmpty等)都可以对 @Valid 和 @Validated 生效;

2:@Valid 进行校验的时候,需要用 BindingResult 来做一个校验结果接收。当校验不通过的时候,如果手动不 return ,则并不会阻止程序的执行;

3:@Validated 进行校验的时候,当校验不通过的时候,程序会抛出400异常,阻止方法中的代码执行,这时需要再写一个全局校验异常捕获处理类,然后返回校验提示。

4:总体来说,@Validated 使用起来要比 @Valid 方便一些,它可以帮我们节省一定的代码,并且使得方法看上去更加的简洁。

此包下其它常用的校验注解:

图片

来源:blog.csdn.net/XikYu/article/details/128869563

1. 优秀的 Java 代码都是如何分层的 ?看了直呼NB!

2. IDEA新UI速览,成了 VS Code 的样子?

3. 如果有一千万数据,怎么用Java快速查询?

4. 废物利用,拿自己的旧电脑搭建个服务器吧!

最近面试BAT,整理一份面试资料Java面试BATJ通关手册,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。

获取方式:点“在看”,关注公众号并回复 Java 领取,更多内容陆续奉上。

PS:因公众号平台更改了推送规则,如果不想错过内容,记得读完点一下在看,加个星标,这样每次新文章推送才会第一时间出现在你的订阅列表里。

“在看”支持呀,谢谢啦

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
翘臀?骨盆前倾?傻傻分不清楚。你能识别孩子的谎话吗?当孩子开始说谎,这些事你一定要清楚!高尔夫降维打球“常委会”、“常委会议”和“常委会会议”,别傻傻分不清楚英国伦敦爱丁堡带孩子游记 Spring 2023还在傻傻的分不清Linux的文件权限吗?后妈继女傻傻分不清?44岁男子离婚后迎娶小娇妻,和女儿如双胞胎!网友狂喷...Set Me Free -BTS后妈继女傻傻分不清?44岁男子离婚后迎娶小娇妻,和女儿如同双胞胎!网友狂喷...Prompt Engineer也保不住工作了!Midjourney发布图片生成Prompt功能“Describe”Linux 中 root 与 sudo 的用法与区别,居然这么多人搞不清楚!Agustín Hernández:中美洲建筑背景下的未来主义巨构Skirt和dress到底什么区别?95%的人搞不清楚!傻傻分不清!是“账号”还是“帐号”?国家语委最新回应美团太细了,HashMap可以存null,ConcurrentHashMap不可以,为什么?【周末综艺会6期】Spring Garden Show 和板蓝花儿开SiamRPN、SiamMask、UpdateNet、SiamAttn…你都掌握了吗?一文总结目标追踪必备经典模型(二)博尔赫斯5033 血壮山河之武汉会战 鏖战幕府山 2精选DS岗位 | BlackRock、Belvedere Trading, LLC、HP来袭!游戏,现实,傻傻分不清了!硕士学位傻傻分不清?MSc、MA、MPhil、MRes...到底是什么?粉红宝粉蓝宝傻傻分不清?你不是一个人~ ——“大王私房课系列二”第61期西瓜分不清楚?一文带你看全Feminist Publisher Accused of Attempted Sexual Assault一文详解Prompt学习和微调(Prompt Learning & Prompt Tuning)帕拉伊巴,拉贡碧玺,傻傻分不清?——“大王私房课系列二”第75期Court Ruling Sparks Debate Over Promoting Work on Social Media红脖是美国的雷锋Spring循环依赖那些事儿(含Spring详细流程图)OpenAI创始人的AGI预言:AI Safety、Scaling laws与GPT-20|GGViewJiangsu City Punishes Property Developers For Selling CheaplySpring break【本周折扣汇总】Ocado超市75折!NIKE/Hollister/Lululemon最低4折!资生堂半价!傻傻分不清!!双胞胎姐妹与双胞胎兄弟交往,自爆经常认错对方.....冰淇淋、雪糕、冰棍傻傻分不清?一篇说清楚→McDonald的Mc到底是什么意思?吃了这么久一定要搞清楚!还在傻傻的分不清 Linux 的文件权限吗?束
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。