当前位置:网站首页>@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校验之分组策略
边栏推荐
- wpf 获取datagrid 中指定行列的DataGridTemplateColumn中的控件
- Is the securities account given by the school of Finance and business safe? Can I open an account?
- Abnova e (diii) (WNV) recombinant protein Chinese and English instructions
- Specification of protein quantitative kit for abbkine BCA method
- Return to blowing marshland -- travel notes of zhailidong, founder of duanzhitang
- Abnova maxpab mouse derived polyclonal antibody solution
- 【案例】元素的显示与隐藏的运用--元素遮罩
- 培养机器人教育创造力的前沿科技
- Introduction to TS, constructor and its this, inheritance, abstract class and interface
- 基于AVFoundation实现视频录制的两种方式
猜你喜欢
Analyze the knowledge transfer and sharing spirit of maker Education
显示器要申请BS 476-7 怎么送样?跟显示屏一样吗??
2.<tag-哈希表, 字符串>补充: 剑指 Offer 50. 第一个只出现一次的字符 dbc
The development of research tourism practical education helps the development of cultural tourism industry
PHP反序列化+MD5碰撞
ArcGIS栅格重采样方法介绍
使用WebAssembly在浏览器端操作Excel
基于vertx-web-sstore-redis的改造实现vertx http应用的分布式session
Write an interface based on flask
Interpreting the daily application functions of cooperative robots
随机推荐
启牛2980有没有用?开户安全吗、
XML建模
使用WebAssembly在浏览器端操作Excel
Abnova cyclosporin a monoclonal antibody and its research tools
清除app data以及获取图标
Prosci LAG-3 recombinant protein specification
matplotlib绘图润色(如何形成高质量的图,例如设如何置字体等)
Matplotlib drawing retouching (how to form high-quality drawings, such as how to set fonts, etc.)
产品好不好,谁说了算?Sonar提出分析的性能指标,帮助您轻松判断产品性能及表现
sql系列(基础)-第二章 限制和排序数据
Using webassembly to operate excel on the browser side
Material design component - use bottomsheet to show extended content (II)
Traps in the explode function in PHP
Learning notes of SAS programming and data mining business case 19
Analyze the knowledge transfer and sharing spirit of maker Education
10000+ 代码库、3000+ 研发人员大型保险集团的研发效能提升实践
基于flask写一个接口
Typhoon is coming! How to prevent typhoons on construction sites!
LeetCode_哈希表_困难_149. 直线上最多的点数
Is Kai Niu 2980 useful? Is it safe to open an account