当前位置:网站首页>@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校验之分组策略
边栏推荐
- Analyze the knowledge transfer and sharing spirit of maker Education
- 教你自己训练的pytorch模型转caffe(一)
- Learning notes of SAS programming and data mining business case 19
- 五层网络协议
- 最长摆动序列[贪心练习]
- 基於flask寫一個接口
- Mode - "Richter replacement principle"
- vant 源码解析 之深层 合并对象 深拷贝
- Is Kai Niu 2980 useful? Is it safe to open an account
- 渗透创客精神文化转化的创客教育
猜你喜欢

显示器要申请BS 476-7 怎么送样?跟显示屏一样吗??

2.<tag-哈希表, 字符串>补充: 剑指 Offer 50. 第一个只出现一次的字符 dbc

珍爱网微服务底层框架演进从开源组件封装到自研

当Steam教育进入个性化信息技术课程

haas506 2.0开发教程 - 阿里云ota - pac 固件升级(仅支持2.2以上版本)

Talk about my fate with some programming languages

phpstudy小皮的mysql点击启动后迅速闪退,已解决

Enclosed please find. Net Maui's latest learning resources

Research and development efficiency improvement practice of large insurance groups with 10000 + code base and 3000 + R & D personnel

教你自己训练的pytorch模型转caffe(三)
随机推荐
js常用方法封装
浅聊我和一些编程语言的缘分
LeetCode_哈希表_困难_149. 直线上最多的点数
100 cases of shell programming
序列联配Sequence Alignment
水泥胶黏剂BS 476-4 不燃性测试
ODPs next map / reduce preparation
LeetCode: Distinct Subsequences [115]
培养机器人教育创造力的前沿科技
MYSQL IFNULL使用功能
实现浏览页面时校验用户是否已经完成登录的功能
获取前一天的js(时间戳转换)
ts 之 类的简介、构造函数和它的this、继承、抽象类、接口
php中explode函数存在的陷阱
Is it safe to open a stock account by mobile phone? My home is relatively remote. Is there a better way to open an account?
Enclosed please find. Net Maui's latest learning resources
教你自己训练的pytorch模型转caffe(三)
Abnova maxpab mouse derived polyclonal antibody solution
ts 之 属性的修饰符public、private、protect
Abnova fluorescent dye 620-m streptavidin scheme