博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springboot注解@NotNull,@NotBlank,@Valid自动判定空值
阅读量:3961 次
发布时间:2019-05-24

本文共 1670 字,大约阅读时间需要 5 分钟。

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

一.前言

  • 使用springboot搭建项目时,我们都是采用的Restful风格接口,这里面问题来了,当前端调用接口或者是其他项目调用时,传入参数时我们不能单一靠调用方来控制参数的准确性,自己也要一些参数进行判断,进行非空之类的

二.解决方案

  • 我们用的多的方法都是在分分钟进行判空效验

实体类:

public class Student{.	private int userID;		private string name;		private int score;}

然后就是在collection进行判断

@PostMapping("/addStudent")public String addStudent(@RequestBody Student stu){	if(stu.getUserId==null){		return "用户ID不能为空";		}	if(stu.getName==null){		return "学生姓名不能为空";		}	if(stu.getScore==null){		return "name不能为空";	}	return "rucess"}
  • 这种做法是可取的,也能达到我们的要求,但是这样如果实体类字段过多,判定的就很多,相对维护起来就不是那么方便,其次就是会增加controller层的负担,既然我们来到spring4的时代,使用注解就可以很简单的解决,下面是我们使用注解后的比变化。

实体类:

public class Student{.	@NotNull(message = "学生ID为空")	private int userID;		@NotNull(message = "学生姓名不能为空")	private string name;		@NotNull(message = "成绩不能为空")	private int score;}

Contriller:

@PostMapping("/addStudent")public String addStudent(@RequestBody @Valid Student stu,BindingResult results){	if(results.hasErrors()){	return results.getFieldError().getDefaultMessage();	}	return "success";}

三.常用注解

限制 说明
@Null 限制只能为null
@NotNull 限制必须不为null
@AssertFalse 限制必须为false
@AssertTrue 限制必须为true
@DecimalMax(value) 限制必须为一个不大于指定值的数字
@DecimalMin(value) 限制必须为一个不小于指定值的数字
@Digits(integer,fraction) 限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction
@Future 限制必须是一个将来的日期
@Max(value) 限制必须为一个不大于指定值的数字
@Min(value) 限制必须为一个不小于指定值的数字
@Past 限制必须是一个过去的日期
@Pattern(value) 限制必须符合指定的正则表达式
@Size(max,min) 限制字符长度必须在min到max之间
@Past 验证注解的元素值(日期类型)比当前时间早
@NotEmpty 验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0)
@NotBlank 验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的空格
@Email 验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式

转载地址:http://bbezi.baihongyu.com/

你可能感兴趣的文章
解决Linux CentOS中cp -f 复制强制覆盖的命令无效的方法
查看>>
wdcpv3升级到v3.2后,多PHP版本共存的安装方法
查看>>
PHP统计当前网站的访问人数,访问信息,被多少次访问。
查看>>
Windows10远程报错CredSSP加密oracle修正
查看>>
Windows server 2016 设置多用户登陆
查看>>
偶然发现的面包屑
查看>>
CentOS 7 下挂载NTFS文件系统磁盘并设置开机自动挂载
查看>>
非插件实现Typecho语法高亮
查看>>
windows 下 netsh 实现 端口映射(端口转发)
查看>>
两个好用的命令行工具 watch 和 rsync
查看>>
信安入门神级书单
查看>>
【IPFS指南】IPFS的竞争对手们(一)
查看>>
docker更换国内镜像
查看>>
CentOS 下 tree命令用法详解
查看>>
docker上传镜像至Registry时https报错解决方法
查看>>
安装 docker-compose (实测可用,妈妈再也不用担心被墙了)
查看>>
docker下删除none的images
查看>>
Linux提权获取敏感信息方法
查看>>
Ubuntu 16.04开机A start job is running for Raise network interface(5min 4s)解决方法
查看>>
Ubuntu 16.04开机隐藏菜单缩短时间
查看>>