SpringBoot注解@NotNull,@NotBlank,@Valid自动判定空值

一、前言

搭建springboot项目,我们都是采用的Restful接口,那么问题来了,当前端调用接口或者是其他项目调用时,我们不能单一靠调用方来控制参数的准确性,自己也要对一些非空的值进行判定。

注解所用包:
import javax.validation.constraints.*;

二、常用的校验注解

所在包(注意别导错包):import javax.validation.constraints.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 被注释的字符串的大小必须在指定的范围内 @NotEmpty 被注释的字符串必须非空 @Range 被注释的元素必须在合适的范围内

三、项目实战【别忘记加@Valid注解】

说明

1、在Bean的字段上增加注解相应提示语就好了。

@NotNull private String name;

2、在controller上【别忘记@Valid注解】, @Valid Bean bean,BindingResult result

public ReturnT insert(@Valid LuteArticle luteArticle, BindingResult result) { if (result.hasErrors()) { return ReturnT.FAIL(HttpStatus.HTTP_BAD_REQUEST, Objects.requireNonNull(result.getFieldError()).getDefaultMessage()); } return luteArticleService.insert(luteArticle); }

作为参数,当name未传入时,可以在result里面获得校验信息

3、在Bean的构造器使用

public Bean(@NonNull Integer id) { this.id=id; } new Bean(null);会报空指针异常

实战 ex:

/** * 文章标题 */ @NotNull(message = "标题不能为空") private String articleTitle;

Model:

package com.nathan.lute.module.pojo; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; import javax.validation.constraints.NotNull; import java.io.Serializable; import java.util.Date; /** 文章表 @author Na7han 2019-11-26 */ @Data @TableName("lute_article") @Accessors(chain = true) @NoArgsConstructor @AllArgsConstructor public class LuteArticle implements Serializable { private static final long serialVersionUID = 1L; /** 主键 */ @TableId(type = IdType.ID_WORKER_STR) private String oid; /** 文章标题 */ @NotNull(message = "标题不能为空") private String articleTitle; /** 文章摘要 */ private String articleSummary; /** 文章标签,英文逗号分隔 */ private String articleTags; /** 文章作者id */ private String articleAuthorId; /** _count int(11) */ private Integer articleCommentCount; /** 文章浏览计数 */ private Integer articleViewCount; /** 文章正文 */ private String articleContent; /** 文章访问路径 */ private String articlePermalink; /** 文章是否置顶 */ private String articlePutTop; /** 文章创建时间 */ private Date articleCreateTime; /** 文章更新时间 */ private Date articleUpdateTime; /** able char(1) */ private String articleCommentable; /** 文章首图地址 */ private String articleImgUrl; /** 文章状态,0-已发布,1-草稿 */ private Integer articleStatus; }

Controller:

/** * [新增] * * @author Na7han * @date 2019/11/26 **/ @ResponseBody @RequestMapping("/insert") public ReturnT insert(@Valid LuteArticle luteArticle, BindingResult result) { if (result.hasErrors()) { return ReturnT.FAIL(HttpStatus.HTTP_BAD_REQUEST, Objects.requireNonNull(result.getFieldError()).getDefaultMessage()); } return luteArticleService.insert(luteArticle); }

原文转载:https://codeleading.com/article/22942555055/


__EOF__

本文作者独苏
本文链接https://www.cnblogs.com/dusucyy/p/16641090.html
关于博主:编程小萌新一名,希望从今天开始慢慢提高,一步步走向技术的高峰!
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   独苏  阅读(1895)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示