当前位置:网站首页>@Validated基础参数校验、分组参数验证和嵌套参数验证
@Validated基础参数校验、分组参数验证和嵌套参数验证
2022-07-05 21:00:00 【进击的豌豆哥】
1、@Validated基础参数校验
实体类
@Data
public class User1Dto {
/** * 用户名 */
@NotBlank(message = "用户名不能为空!")
private String username;
/** * 性别 */
@NotBlank(message = "性别不能为空!")
private String gender;
/** * 年龄 */
@Min(value = 1, message = "年龄有误!")
@Max(value = 120, message = "年龄有误!")
private int age;
/** * 地址 */
@NotBlank(message = "地址不能为空!")
private String address;
/** * 邮箱 */
@Email(message = "邮箱有误!")
private String email;
/** * 手机号码 */
@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 mobile;
}
控制类
@RestController
@RequestMapping("/api/v1")
public class Demo1Controller {
@PostMapping("/insert")
public String validatedDemo1(@Validated @RequestBody Use1Dto use1Dto){
System.out.println(use1Dto);
return "success";
}
}
2、@Validated分组参数校验
第一步、定义一个校验组类,声明四个接口对应不同场景校验
public class ValidationGroups {
public interface Select {
}
public interface Insert {
}
public interface Update {
}
public interface Detail {
}
public interface Delete{
}
}
第二步、在实体类具体属性添加校验规则及校验分组
@Data
public class Person {
@NotNull(message = "personId不能为null",groups = Select.class)
private Integer personId;
@NotEmpty(message = "name不能为空",groups = Insert.class)
private String name;
private Integer age;
}
第三步、在控制层创建查询和新增接口,添加@Validated注解,指定分组,可多个。
@GetMapping("/select")
public Object select(@Validated({
ValidationGroups.Select.class}) Person person) {
return person;
}
@GetMapping("/insert")
public Object insert(@Validated(ValidationGroups.Insert.class) Person person) {
return person;
}
3、@Validated嵌套参数验证
实体类
@Data
public class Team1Dto {
/** * 队伍名称 */
@NotBlank(message = "队伍名称不能为空!")
private String name;
/** * 队伍人员 */
@NotNull(message = "队伍人员不能为空!")
@Valid
private List<User1Dto> userList;
/** * 队伍负责人 */
@NotNull(message = "队伍负责人不能为空!")
@Valid
private User1Dto user;
}
控制类
@RestController
@RequestMapping("/api/v1")
public class Demo1Controller {
@PostMapping("/insert")
public Result validatedDemo1(@Validated @RequestBody Use1Dto use1Dto){
return ResultUtil.success(use1Dto);
}
@PostMapping("/insert2")
public Result validatedDemo2(@Validated @RequestBody Team1Dto team1Dto){
return ResultUtil.success(team1Dto);
}
}
4、参考
@Validated分组校验 - 一只程序员的文章
@Validated注解详解,分组校验,嵌套校验,@Valid和@Validated 区别,Spring Boot @Validated
四、@Validated校验之分组策略
边栏推荐
- LeetCode: Distinct Subsequences [115]
- matplotlib绘图润色(如何形成高质量的图,例如设如何置字体等)
- 判断横竖屏的最佳实现
- The development of research tourism practical education helps the development of cultural tourism industry
- MYSQL IFNULL使用功能
- 基于AVFoundation实现视频录制的两种方式
- Abnova cyclosporin a monoclonal antibody and its research tools
- Comparison table of foreign lead American abbreviations
- CLion配置visual studio(msvc)和JOM多核编译
- 基于flask写一个接口
猜你喜欢
leetcode:1755. 最接近目标值的子序列和
Talk about my fate with some programming languages
Abnova e (diii) (WNV) recombinant protein Chinese and English instructions
浅聊我和一些编程语言的缘分
Pytorch实战——MNIST数据集手写数字识别
基于vertx-web-sstore-redis的改造实现vertx http应用的分布式session
培养机器人教育创造力的前沿科技
当Steam教育进入个性化信息技术课程
Open source SPL eliminates tens of thousands of database intermediate tables
PHP deserialization +md5 collision
随机推荐
Talk about my fate with some programming languages
研学旅游实践教育的开展助力文旅产业发展
从架构上详解技术(SLB,Redis,Mysql,Kafka,Clickhouse)的各类热点问题
leetcode:1755. 最接近目标值的子序列和
Research and development efficiency improvement practice of large insurance groups with 10000 + code base and 3000 + R & D personnel
2.<tag-哈希表, 字符串>补充: 剑指 Offer 50. 第一个只出现一次的字符 dbc
树莓派4B上ncnn转换出来的模型调用时总是崩溃(Segment Fault)的原因
示波器探头对信号源阻抗的影响
Implementation of redis unique ID generator
vant 源码解析 之深层 合并对象 深拷贝
js常用方法封装
Comparison table of foreign lead American abbreviations
EN 438-7建筑覆盖物装饰用层压板材产品—CE认证
Is it necessary for bazel to learn
Duchefa p1001 plant agar Chinese and English instructions
Abnova total RNA Purification Kit for cultured cells Chinese and English instructions
poj 3414 Pots (bfs+线索)
Traps in the explode function in PHP
教你自己训练的pytorch模型转caffe(一)
Viewrootimpl and windowmanagerservice notes