感谢作者: http://www.spring4all.com/article/1228

本章也是轻松搞定数据验证的最后一篇, 一起来揭开神秘的分组验证

分组验证

有的时候,我们对一个实体类需要有多中验证方式,在不同的情况下使用不同验证方式,比如说对于一个实体类来的 id 来说,新增的时候是不需要的,对于更新时是必须的,这个时候你是选择写一个实体类呢还是写两个呢?

在自定有数据有效性校验注解中介绍到注解需要有一个 groups 属性,这个属性的作用又是什么呢?

接下来就让我们看看如何用一个验证类实现多个接口之间不同规则的验证...

分组验证器

定义一个验证组,里面写上不同的空接口类即可

/*** @author Ray* @date 2018/7/4 0004* 验证组*/
public class Groups {public interface Update{};public interface Default{};
}

实体类

groups 属性的作用就让 @Validated 注解只验证与自身 value 属性相匹配的字段,可多个,只要满足就会去纳入验证范围;我们都知道针对新增的数据我们并不需要验证 ID 是否存在,我们只在做修改操作的时候需要用到,因此这里将 ID 字段归纳到 Groups.Update.class 中去,而其它字段是不论新增还是修改都需要用到所以归纳到 Groups.Default.class中...

/*** @author Ray* @date 2018/7/4 0004*/
public class Book3 {@NotNull(message = "id 不能为空", groups = Groups.Update.class)private Integer id;@NotNull(message = "name 不允许为空", groups = Groups.Default.class)private String name;@NotNull(message = "price 不允许为空", groups = Groups.Default.class)private BigDecimal price;// 省略setter/getter
}

控制层

/*** @author Ray* @date 2018/7/4 0004* 参数校验*/
@RestController
public class ValidateController3 {/***  insert 方法并不关心 ID 字段*/@GetMapping("/insert")public String insert(@Validated(value = Groups.Default.class)Book3 book3){return "insert";}/***  update 方法需要去验证 ID 是否为空*/@GetMapping("/update")public String update(@Validated(value = {Groups.Default.class, Groups.Update.class}) Book3 book3){return "update";}
}

测试

完成准备事项后,启动项目,自行测试即可,测试手段相信大伙都不陌生了,如 浏览器postmanjunitswagger,此处基于 postman

>insert接口

>update接口

SpringBoot 轻松搞定数据验证 (三)相关推荐

  1. SpringBoot 轻松搞定数据验证 (一)

    感谢作者: http://www.spring4all.com/article/1224 对于任何一个应用而言,客户端做的数据有效性验证都不是安全有效的,而数据验证又是一个企业级项目架构上最为基础的功 ...

  2. SpringBoot 轻松搞定数据验证 (二)

    感谢作者: http://www.spring4all.com/article/1225 当系统自带的注解无法满足我们的要求时候应该咋办呢?这就是本章将给各位介绍的自定义 Validator 注解 为 ...

  3. pythonr语言三种基本结构_如何轻松搞定数据科学面试:Python&R语言篇

    作者: Carson Forter 编译: Mika本文为 CDA 数据分析师原创作品,转载需授权 对于数据科学家来说,工作的一大部分都需要在交互式编程环境中对数据进行处理.分析和可视化. 在过去几年 ...

  4. 9月20日云栖精选夜读 | 如何轻松搞定数据科学面试:Python&R语言篇

    对于数据科学家来说,工作的一大部分都需要在交互式编程环境中对数据进行处理.分析和可视化. 在过去几年,R语言和Python成了进行数据科学中最炙手可热的两种语言.这两种语言各有优缺点,掌握这两种语言大 ...

  5. 动态添加跨行表格_学会这2招,轻松搞定数据透视表动态更新,效率猛增一倍...

    私信回复关键词[福利],获取丰富办公资源,助你高效办公早下班! Hello,大家好,我是最近在研究数据透视表的小爽~ 最近,我收到了一个学员的求助: 简单归纳一下,这个问题就是: 如何能让数据透视表的 ...

  6. mybatis-plus团队新作:mybatis-mate 轻松搞定数据权限

    欢迎关注方志朋的博客,回复"666"获面试宝典 今天介绍一个 MyBatis - Plus 官方发布的神器:mybatis-mate 为 mp 企业级模块,支持分库分表,数据审计. ...

  7. 线程导入大数据入库_大数据处理及分析该怎么做?用这款数据分析软件轻松搞定...

    ​对大数据的重视让很多企业都在纷纷寻找更好的大数据处理及分析方法?这款数据分析软件轻松搞定! 一.数据采集 虽然每天互联网都会产生大量的数据,对于企业来讲,要搜集对自己企业有用的数据才是真的大数据.首 ...

  8. 如何在原先的jqgrid中填充新的数据_自然人电子税务局(扣缴端)数据如何恢复?申税小微教您轻松搞定...

    自然人电子税务局 数据如何恢复? 申税小微教您轻松搞定! 财务小王:申税小微,我们公司换了新电脑,重新安装的自然人电子税务局(扣缴端)上没有人员采集信息和历史申报数据该怎么办? 申税小微: 1.可以在 ...

  9. 如何实现3台计算机网络传递文件,两台电脑如何实现对拷,三种办法轻松搞定!...

    原标题:两台电脑如何实现对拷,三种办法轻松搞定! 有时候,我们换电脑了,可能需要在两台电脑之间传送大容量的文件,但是两台电脑之间如何互相传送或者拷贝文件,除了U盘.硬盘.QQ或微信能解决问题,你还知道 ...

最新文章

  1. 数据结构和算法:(3)3.2.2单链表的整表删除
  2. The Road to Ryu: Hi Ryu
  3. pytorch实现性别检测
  4. 冲锋衣和羽绒服哪个保暖?
  5. android 常用命令随手记
  6. apache、nginx验证
  7. android中文api (59) —— TabHost.TabSpec
  8. 开源FTP 服务器 FileZilla Server
  9. 游戏开发学习路线——游戏引擎原理
  10. matlab求解常微分方程组——dsolve与ode45
  11. upnp+捕捉摄相头客户端程序
  12. 我的后台Java面经(阿里、腾讯、头条、京东、IBM等)
  13. 通过EasyPOI导入excel数据
  14. 【易通慧谷】通过一个案例两张概念图解析供应链金融
  15. 众数问题c语言编程,C语言 众数问题
  16. Android应用安全
  17. CAD图块全攻略:别羡慕我下班早,我的CAD软件会开挂!
  18. C语言 求解一元二次方程组
  19. 三洋服务器显示F6,格力空调故障代码f6什么原因
  20. 清理autodesk产品注册表_如何完整移除Autodesk的产品?

热门文章

  1. 金铜仙人辞汉歌-李贺
  2. 字体图标iconfont的使用
  3. 汇编语言笔记-keil5软件仿真及调试
  4. MyBatis-plus从入门到精通(全)
  5. 超简单集成华为HMS Core MLKit 机器学习服务银行卡识别SDK,一键实现银行卡绑定
  6. Command CompileAssetCatalog emitted errors but did not return a nonzero exit code to indicate failur
  7. SDEdit一点成画,小白也能是绘画大师!
  8. 振动数据 自相关计算时时延_振动诊断技术
  9. imag.js|快速掌握全局方法
  10. 用python画一个简单卡通人物,Python绘制可爱的卡通人物 | 【turtle使用】