当前位置: 首页 > news >正文

SpringBoot使用validation进行自参数校验

一:介绍

        在 SpringBoot 项目开发中,很多与数据库交互的参数需要校验数据正确性。很多小伙伴会把参数判断写进代码里,但是这种写法往往会有低可读性以及多处使用的时候,需要变更验证规则时,不易于维护等缺点。今天给大家介绍 Starter 的 validation 依赖。可以直接使用注解的方式进行参数的校验,可读性与维护性都显著提高。

        一些常见的:

二:使用

1、添加依赖

        该依赖属于 org.springframework.boot 下。

            <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId><version>3.2.1</version></dependency>

        因为后面用到了 @Data ,所以需要添加 lombok。

            <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.30</version></dependency>
2、编写 pojo 类

        代码如下:

import lombok.Data;import javax.validation.constraints.*;
import java.time.LocalDate;@Data
public class Person {@NotBlank(message = "名字不能为空")private String name;@Max(value = 100,message = "年龄不能大于100岁")@Min(value = 0 ,message = "年龄不能小于0岁")private int age;@Email(message = "邮箱格式不正确")private String email;//@Past(message = "生日不能大于当前日期")//private LocalDate birthDay;
}
3、编写controller类
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.validation.Valid;@RestController
@RequestMapping("/validation")
public class validationController {@PostMapping("/demo")public Person demo(@RequestBody @Valid Person person){return person;}
}
4、post接口数据

{

    "name": "",

    "age": -1,

    "email": "email#163.com"

}

6、结果

相关文章:

  • 未来数字世界相关技术:数字人、元宇宙、全息显示
  • 2024新动态:低代码开发占领新常态市场
  • 智能抠图怎么使用?4个快速消除图片背景的小技巧
  • FPGA随记-二进制转格雷码
  • pytorch 加载模型参数后 如何测试数据,应用模型预测数据,然后连续变量转换成 list 或者numpy.array padans并保存到csv文件中
  • 单链表的实现(C语言)
  • Android 去掉SIM卡插拔出现的重启弹窗提示
  • STM32 的 SDIO 接口(基于STM32F429HAL库)
  • 【xhs截流软件】爬取小红书关键词笔记下的筛选评论
  • ComfyUI 节点、插件的基本指南
  • PHP程序如何实现限制一台电脑登录?
  • 024.PL-SQL进阶—游标
  • 吐血整理 ChatGPT 3.5/4.0 新手使用手册~ 【亲测好用】
  • ES6的简单介绍(第三部分)
  • 基于Java语言的充电桩平台+充电桩系统+充电桩管理系统+充电桩系统源码+充电桩管理后台+充电桩小程序
  • 分享一款快速APP功能测试工具
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • go语言学习初探(一)
  • Java-详解HashMap
  • leetcode386. Lexicographical Numbers
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • Sublime Text 2/3 绑定Eclipse快捷键
  • Vue 重置组件到初始状态
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 开发基于以太坊智能合约的DApp
  • 区块链共识机制优缺点对比都是什么
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 系统认识JavaScript正则表达式
  • 异常机制详解
  • 原生 js 实现移动端 Touch 滑动反弹
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • scrapy中间件源码分析及常用中间件大全
  • 数据可视化之下发图实践
  • #define与typedef区别
  • #includecmath
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (3)nginx 配置(nginx.conf)
  • (day18) leetcode 204.计数质数
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (十一)手动添加用户和文件的特殊权限
  • (译)2019年前端性能优化清单 — 下篇
  • (转)Windows2003安全设置/维护
  • .NET CORE Aws S3 使用
  • .Net CoreRabbitMQ消息存储可靠机制
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • .NET中的十进制浮点类型,徐汇区网站设计
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • @Autowired注解的实现原理
  • @Builder用法