浅谈判空注解(@NotNull与@NotBlank)

简介: 浅谈判空注解(@NotNull与@NotBlank)

1.背景

我们在编写后端接口的时候,往往会遇到这样的问题,某个属性不能为空,某个属性不允许为空,但能为空串等各种校验,我们虽然可以自己写if去判断,但似乎显得些许的麻烦,于是我们今天就来演练一下判空注解的使用

对于想看看整体流程的同学,可以跟着文章一步一步看,有基础的或者心急的小伙伴可以直接翻到小总结那里看额🤩

2.环境搭建

基础环境我已经搭建好了,我把目录放出来,各位看官一看便知

win环境下,tree /F 即可查看目录树和下面的文件

├─src

│ ├─main

│ │ ├─java

│ │ │ └─cn

│ │ │ └─blog

│ │ │ │ BlogValidDemoApplication.java

│ │ │ │

│ │ │ ├─controller

│ │ │ │ ValidController.java

│ │ │ │

│ │ │ └─entity

│ │ │ SaveUserParam.java

│ │ │

│ │ └─resources

│ │ application.properties

│ │ application.yml

3.没有添加校验注解的情况

我们先放下代码

SaveUserParam.java

import lombok.Data;
/**
 * @Author tiancx
 * @create 2023/2/14
 */
@Data
public class SaveUserParam {
    /**
     * 用户姓名 不能为空
     */
    private String userName;
    /**
     * 性别 0:男   1:女  不能为空
     */
    private Integer sex;
    /**
     * 工号  不能为空
     */
    private Integer workNum;
    /**
     * 描述 不能为空,但允许为空串
     */
    private String desc;
}

ValidController.java

import cn.blog.entity.SaveUserParam;
import org.springframework.web.bind.annotation.*;
/**
 * @Author tiancx
 * @create 2023/2/14
 */
@RestController
@RequestMapping("valid/v1")
public class ValidController {
    @PostMapping("user")
    public String saveUser(@RequestBody SaveUserParam saveUserParam){
        /**
         * 省略插入数据的逻辑处理,主要是学习如何使用@NotNull,@NotBank注解
         */
        return "保存成功";
    }
}

我们通过ApiFox调用接口测试

我们会发现这种情况下,接口是能够正常返回的

4.添加校验注解

我们添加注解

记得在Controller层的方法参数前加上@Valid注解

我们再次请求时,就会发现报错了,原因就是不能传空

我们现在传一个合法的参数

可以发现是请求成功的,恭喜完成😁

5.小总结

@NotNull 用在基本数据类型上(Integer,Long等),表示传的值不能为空,也可以用在String类型上,表示可以传空串(本例子中有用到额,你发现了么ლ(′◉❥◉`ლ))

@NotBlank 用在String上,表示穿的值不能为空,空串也不行

=😍😍😍=

哈哈哈,看了是不是感觉可以直接拿下了😎

这些小技巧在工作中合理用到的话(尤其是以前不知道的老板),还担心工作完不成吗?效率倍儿提升🥰

今天2月14号,刚好也是情人节,早早写完代码回去😍,哈哈哈


相关文章
|
Java 数据库连接 Spring
深入了解数据校验(Bean Validation):从深处去掌握@Valid的作用(级联校验)以及常用约束注解的解释说明【享学Java】(下)
深入了解数据校验(Bean Validation):从深处去掌握@Valid的作用(级联校验)以及常用约束注解的解释说明【享学Java】(下)
深入了解数据校验(Bean Validation):从深处去掌握@Valid的作用(级联校验)以及常用约束注解的解释说明【享学Java】(下)
|
2月前
|
监控 安全 Java
Spring注解之恋:@Async和@Transactional的双重奏
Spring注解之恋:@Async和@Transactional的双重奏
380 0
|
Java Spring 容器
面试官:@Configuration 和 @Component 注解的区别?大部分人都会答错!
面试官:@Configuration 和 @Component 注解的区别?大部分人都会答错!
111 0
面试官:@Configuration 和 @Component 注解的区别?大部分人都会答错!
|
消息中间件 JavaScript 小程序
一个注解干翻所有Controller
一个注解干翻所有Controller
小满nestjs(第十七章 nestjs 异常拦截器)
让我们创建一个异常过滤器,它负责捕获作为HttpException类实例的异常,并为它们设置自定义响应逻辑。为此,我们需要访问底层平台 Request和 Response。我们将访问Request对象,以便提取原始 url并将其包含在日志信息中。我们将使用 Response.json()方法,使用 Response对象直接控制发送的响应。
106 0
小满nestjs(第十七章 nestjs 异常拦截器)
|
Java Spring
@Autowire中byName和byType的实现过程
@Autowire中byName和byType的实现过程
|
缓存 Java 开发者
腾讯二面:@Bean 与 @Component 用在同一个类上,会怎么样?
腾讯二面:@Bean 与 @Component 用在同一个类上,会怎么样?
151 0
腾讯二面:@Bean 与 @Component 用在同一个类上,会怎么样?
|
Java 测试技术 开发者
面试官:@Autowired, @Resource, @Inject 三个注解的区别?一下懵了。。。(2)
本章的内容主要是想探讨我们在进行Spring 开发过程当中,关于依赖注入的几个知识点。
139 0
面试官:@Autowired, @Resource, @Inject 三个注解的区别?一下懵了。。。(2)
|
Java Spring
面试官:@Autowired, @Resource, @Inject 三个注解的区别?一下懵了。。。(1)
本章的内容主要是想探讨我们在进行Spring 开发过程当中,关于依赖注入的几个知识点。
149 0
面试官:@Autowired, @Resource, @Inject 三个注解的区别?一下懵了。。。(1)
|
JSON 前端开发 JavaScript
SpringMVC - @RequestJson之HandlerMethodArgumentResolver 从入门到青铜(一)
SpringMVC - @RequestJson之HandlerMethodArgumentResolver 从入门到青铜(一)
258 0
SpringMVC - @RequestJson之HandlerMethodArgumentResolver 从入门到青铜(一)