数据字典模块–JSR303参数校验

参数校验:框架

不需要重复写if判断是否为空

用户登录时,前端向后端请求接口,传递参数

Hibernate:持久层框架,类似于mybatis

ssm:spring springMVC Mybatis

ssh:Hibernate

2参数校验实现--引入依赖

在 javax.validation.constraints 包下有很多校验注解,直接使用注解定义校验规则即可:

@NotNull只能校验Integer类型

@NotBlank可以校验String和Integer类型

StudentAddDTO1是类,valid注解加在类上

min,message是用数组存储

3.自定义校验规则

@interface:自定义注解为Gender

||:或,有一个满足就返回true,没有满足的就返回false

然后就可以在需要参数校验的地方加上自己定义好的Gender注解

@Target:指定常见注解的放置位置

例:@RestController注解,只能放在类上

ctrl+鼠标左键:点击@RestController注解,进入后可以看到只能放在类上@Target做了限制

@Rentention:作用时间

!在这里插入图片描述(https://i-blog.csdnimg.cn/direct/a5c83e5753b14013b670a3538c26dc73.\[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vOwe1aIc-1777713045156)(https:/![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/cecc6f21854c4b91a7109dd83ec1c196.png)\]

单个属性抛出异常

测试:新建包annotation(注解)

Annotation.Gender 选择注解进行创建

@Constraint用于指定校验所在的类

在测试工具中测试输入上图中的json格式内容

如果gender输入未知,控制台报错

抛出 MethodArgumentNotValidException 异常

分组校验 :

自定义分组接口

校验注解中添加groups属性指定该校验属于哪个分组:

注意:开启分组之后,不需要分组校验的属性也需要添加上groups。否则不会生效。

controller接口参数使用@Validated注解修饰并添加属性value指定使用哪个分组的校验规则:

由于我们在统一响应做了异常参数拼接,所以这里响应的异常能能够拼接在一起

如果改成新增校验,insert,结果就不会走校验

直接新增这条数据

相关推荐
2601_9621066414 小时前
【Java Set综合实战】商品管理系统 + 图书收藏系统|Product、Book自定义类全套代码
java
RuoyiOffice14 小时前
SpringBoot+Vue3 凭证生命周期设计:审核、过账、冲销与反过账怎样保持账目一致
java·spring boot·事务·springboot3·财务系统·会计凭证·ruoyi office
2601_9621066415 小时前
HashMap入门|工号-姓名键值存储、两种遍历方式、根据key/value查
java
杨凯凡15 小时前
Spring Framework 7 API 版本管理实战:请求头路由、兼容迁移与废弃策略
java·rest api·springframework·spring boot 4·api版本管理
T_Wizard16 小时前
同一个问题写了 4 遍:官方 SDK / HTTP / Spring AI / LangChain4j,到底该选哪个
java·ai编程
hai_android16 小时前
AudioTrack 深度解析:从原理到实战
android·java·kotlin
斯维赤16 小时前
限流、熔断、降级,你真的分得清吗?
java·后端·架构
aiks_yuan19 小时前
Java CPU 100% 怎么排查:JDK 11 起 jstack 自带线程 CPU 时间,不用再 top -H 换算十六进制(JDK 8、11、17 实测)
java
Flynn Liang20 小时前
AiServices 源码级拆解:一个接口如何变成 RAG Agent
java·langchain·源码分析·rag·langchain4j·aiservices
Flynn Liang21 小时前
LangChain4j 1.23 架构全景:Java 大模型应用的 6 层抽象
java·langchain·大模型·rag·ai agent·langchain4j