springboot参数校验常用注解及分组校验

一、使用方式添加@Validated

二、常见注解

@Null

  • 被注解的元素必须为null

@NotNull

  • 被注解的元素必须不为null

@NotBlank

  • 只能作用在接收的 String 类型上,注意是只能,不能为 null,而且调用 trim() 后,长度必须大于 0即:必须有实际字符

@NotEmpty

  • 不能为 null,且长度必须大于 0,一般用在集合类上或者数组上

@Min

  • 被注解的元素其值必须大于等于最小值,并且类型为int,long,float,double,BigDecimal等

@Max

  • 被注解的元素其值必须小于等于最大值,并且类型为int,long,float,double,BigDecimal等

@DecimalMin

  • 验证注解的元素值大于等于@DecimalMin指定的value值,并且类型为BigDecimal。

@DecimalMax

  • 验证注解的元素值小于等于@DecimalMax指定的value值 ,并且类型为BigDecimal

@NotNull(message = "请输入分数") 
@DecimalMin(value = 0, message = "分数不能小于0") 
@DecimalMax(value = 5, message = "分数不能大于5") 
private BigDecimal score;

@Size

  • 被注解的元素的长度必须在指定范围内,并且类型为String,Array,List,Map。

@Pattern

  • 被注解的元素必须符合指定的正则表达式,并且类型为String。

@NotBlank(message = "手机号码不能为空") 
@Size(min = 11, max = 11, message = "手机号码不正确") 
@Pattern(regexp = "^(((13[0-9])|(14[579])|(15([0-3]|[5-9]))|(16[6])|(17[0135678])|(18[0-9])|(19[89]))\\d{8})$", message = "账号格式错误") 
private String phone;

@Length

  • 验证注解的元素值长度在min和max区间内 ,并且类型为String。

@Length(max = 11, min = 7, message = "长度必须大于等于7或小于等于11")
private String mobile;

@Past

  • 限制必须是一个过去的日期,并且类型为java.util.Date

@Future

  • 限制必须是一个将来的日期,并且类型为java.util.Date

@Digits

  • 验证格式,限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction
@NotNull(groups = {Insert.class,Update.class}, message = "总投资不能为空")
@DecimalMin(value = "0", message = "总投资不能小于0")
@Digits(integer = 14, fraction = 6, message = "资金格式错误")
private BigDecimal planTotalInvestment;

三、对校验注解进行分组如:

//使用
@ApiOperation(value = "新增", notes = "新增")
@PostMapping("save")
public R save(@RequestBody @Validated({Insert.class}) Dto dto) {return R.ok();
}//dto内定义
@NotNull(groups = {Update.class}, message = "修改时id不能为空")
@Null(groups = {Insert.class}, message = "新增时id必须为空")
private Integer id;

四、全局的异常处理

    /*** 自定义验证异常*/@ExceptionHandler(BindException.class)public AjaxResult handleBindException(BindException e){log.error(e.getMessage(), e);String message = e.getAllErrors().get(0).getDefaultMessage();return AjaxResult.error(message);}/*** 自定义验证异常*/@ExceptionHandler(MethodArgumentNotValidException.class)public Object handleMethodArgumentNotValidException(MethodArgumentNotValidException e){log.error(e.getMessage(), e);String message = e.getBindingResult().getFieldError().getDefaultMessage();return AjaxResult.error(message);}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/578596.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2015年第四届数学建模国际赛小美赛C题科学能解决恐怖主义吗解题全过程文档及程序

2015年第四届数学建模国际赛小美赛 C题 科学能解决恐怖主义吗 原题再现: 为什么人们转向恐怖主义,特别是自杀性恐怖主义?主要原因是什么?这通常是大问题和小问题的结合,或者是一些人所说的“推拉”因素。更大的问题包…

【JavaScript】复制文本到剪切板

✨ 专栏介绍 在现代Web开发中,JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性,还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言,JavaScript具有广泛的应用场景&#x…

tvbox最新接口配置

TVBox是在Github的开源项目,本身是一个空壳软件,可免费使用及再开发。安装后需要配置接口才能正常使用。 TVBox,也被称为网络电视盒子,是一种可以连接到电视的设备,使电视具有智能电视的功能。TVBox的主要功能是通过网…

免费高清无水印视频素材在哪里下?

剪辑是一门创意工作,但很多初学者常常感到困惑,原因并不是因为他们不懂剪辑,而是因为他们不知道从哪里找到合适的素材。今天,我们将为大家盘点一些超全的剪辑素材资源,包括视频素材、音乐素材和图片素材等,…

WAVE SUMMIT迎来第十届,文心一言将有最新披露!

10句话2分钟,挑战成功说服宿管阿姨开门,这个人群中的“显眼包”是一个接入文心大模型4.0游戏里的NPC,妥妥 “工具人”实锤~ 尝试用AI一键自动识别好坏咖啡豆,看一眼便知好坏,真正“颜值即正义”&#xff0…

初识Nginx默认配置文件

说起配置Nginx确实是一件让人头疼的事,开始时对Nginx配置不熟悉,为了满足需求在网上查找了很多相关配置的博客,也是天花乱坠不知道谁对谁错。就不停反复尝试最终在不懈的努力下中终于成功了。那时就觉得是时候好好整理一下Nginx的相关配置了。…

一个基于多接口的业务自动化测试框架!

这是一个成熟的框架,不是要让别人当小白鼠,它已经先后在两家公司的5条业务线进行了推广应用,用例条数到了几千条以上,并且从2018年开始每天都在CI/CD流程中被调用执行。 已有那么多接口测试框架,为什么重复造轮子&…

北亚服务器数据恢复-服务器断电导致raid5故障的数据恢复案例

服务器数据恢复环境: 服务器有一组由12块硬盘组建的raid5阵列。 服务器故障&分析: 机房供电不稳导致服务器意外断电,工作人员重启服务器后发现服务器无法正常使用。 根据故障情况,北亚企安数据恢复工程师初步判断服务器故障原…

SQL数据工程师面试题20231226

1、数据库知识: 表一:Stock(商品库存入库表) 商品编号 入库数量 描述 A 300 A B 400 B C 200 C 注: Stock 表的商品编号是唯一主键。 表二: OutStock(商品库存出库表) 商品编号 出库数量 描述 A 100 A B 40 B B 50 B 注: outStock 表同一个商品存在多次出库。 – 创建 Stoc…

MyBatis见解4

10.MyBatis的动态SQL 10.5.trim标签 trim标签可以代替where标签、set标签 mapper //修改public void updateByUser2(User user);<update id"updateByUser2" parameterType"User">update user<!-- 增加SET前缀&#xff0c;忽略&#xff0c;后缀…

WizFi360-EVB-Pico评估版介绍

文章目录 1 概述2 硬件资源2.1 硬件规格2.2 引脚定义2.3 工作条件 3 参考资料3.1 Datasheet3.2 原理图3.3 尺寸图(单位 : mm) 3.4 参考例程 1 概述 WizFi360-EVB-Pico基于树莓派RP2040&#xff0c;并使用WizFi360增加Wi-Fi连接。它与树莓派Pico板引脚兼容&#xff0c;可用于物联…

一个越南程序员的阿里巴巴之旅

译者 蒋辉文&#xff0c;公众号&#xff1a;ali老蒋 文章说明 本文访谈主人公是一个越南程序员&#xff0c;原来在 Lazada 工作。后来&#xff0c;Lazada 被阿里收购&#xff0c;他就来到阿里&#xff0c;在杭州阿里巴巴西溪园区呆过一段时间。现在&#xff0c;他已经跳槽到…

【MySQL】数据库规范化的三大法则 — 一探范式设计原则

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; 数 据 库 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 1. 第一范式&#xff08;1NF&#xff09;&#xff1a; 2. 第二范式&#xff08;2NF&#xff09;&#xff1a; 3. 第三范式…

打字练习软件推荐:Master of Typing 3 中文 for Mac

"Master of Typing 3"是一款针对打字练习和提高打字速度的软件。它提供了一系列有趣和有挑战性的练习&#xff0c;旨在帮助用户提高键盘打字技能和准确性。 以下是"Master of Typing 3"的一些主要特点和功能&#xff1a; 打字练习&#xff1a;软件提供了各…

2023年12月25日学习总结——MLP

&#x1f4a1;我准备每一天都写一个学习总结&#xff0c;周末再把每日的学习总结汇总成专门的文章 &#x1f506;我的学习总结主要是为了自己的个人学习&#xff0c;没有商业用途&#xff0c;侵删 okkk开始今日学习 目录 1、今日计划学习内容2、今日学习内容深入学习MLP&#…

西南科技大学计算机网络实验四(交换机基本配置与VLAN配置)

一、实验目的 熟悉交换机的各种基本配置与VLAN配置。 二、实验环境 使用RouterSim Network Visualizer软件来模拟网络设备与网络环境。 三、实验内容 1、交换机的基础配置 2、单台交换机上的简单VLAN设置 3、多台交换机上进行VLAN设置 四、实验步骤 4.1 交换机的基础配置…

6.3 多线程的安全与应用

6.3 多线程的安全与应用 1. 多线程概念1. 进程2. 线程 2. 创建多线程3. 线程同步4. 线程安全5. 线程池应用 1. 多线程概念 1. 进程 2. 线程 2. 创建多线程 3. 线程同步 4. 线程安全 5. 线程池应用

编写fastapi接口服务

FastAPI是一个基于 Python 的后端框架&#xff0c;该框架鼓励使用 Pydantic 和 OpenAPI (以前称为 Swagger) 进行文档编制&#xff0c;使用 Docker 进行快速开发和部署以及基于 Starlette 框架进行的简单测试。 step1&#xff1a;安装必要库 pip install fastapi uvicorn st…

设计模式--建造者模式

实验5&#xff1a;建造者模式 本次实验属于模仿型实验&#xff0c;通过本次实验学生将掌握以下内容&#xff1a; 1、理解建造者模式的动机&#xff0c;掌握该模式的结构&#xff1b; 2、能够利用建造者模式解决实际问题。 [实验任务]&#xff1a;计算机组装 使用建造者模…

MySQL explain执行计划详解

使用explain关键字可以模拟优化器执行SQL查询语句&#xff0c;从而知道MySQL是如何处理你的SQL语句的&#xff0c;分析你的查询语句或是表结构的性能瓶颈。 explain执行计划包含的信息 其中最重要的字段为&#xff1a;id、type、key、rows、Extra 各字段详解 id select查询…