Validated使用
导包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
常用效验方式
- 在对象上添加注解@RequestBody@Validated,在对象实体类中国添加相关效验注解(源于javax.validation.constraints)。
- 单个参数效验方式(常用语get请求),controller类上添加@Validated,标识整个类可以进行注解校验;方法参数上添加校验注解。
几个判空注解
- @NotNull : 适用于基本数据类型(Integer,Long,Double等等),当 @NotNull 注解被使用在 String 类型的数据上,则表示该数据不能为 Null(但是可以为 Empty)
- @NotBlank : 适用于 String 类型的数据上,加了@NotBlank 注解的参数不能为 Null 且 trim() 之后 size > 0
- @NotEmpty : 适用于 String、Collection集合、Map、数组等等,加了@NotEmpty 注解的参数不能为 Null 或者 长度为 0
分组效验
场景1:
需求:假设我在使用登录分组校验的时候,设定用户名不能为空和密码最少为2位的验证。而在添加分组设定添加时用户名不能为空和密码最少为6位的验证。
点击查看代码
@Data
public class LoginVo {
@ApiModelProperty(value = "用户名称")
@NotEmpty(message = "用户名不能为空!",groups = LoginModel.class)//LoginModel.class和SaveModel.class都创建成接口,且需要继承Default
@NotEmpty(message = "添加时用户名不能为空!",groups = SaveModel.class)
private String userName;
@ApiModelProperty(value = "密码")
@Size(min = 2,message = "密码最少为2位",groups = LoginModel.class)
@Size(min = 6,message = "密码最少为6位",groups = SaveModel.class)
private String password;
}
在controller的接口上加上@Validated注解,参数就加上你需要根据那种规则来校验,参数可以设置多个分组,从前往后匹配,默认分组是Default.class。
点击查看代码
@ApiOperation(value = "登录以后返回token")
@PostMapping(value = "/login")
public Result login(@RequestBody @Validated(LoginModel.class) LoginVo loginVo) {
String token = userService.login(loginVo.getUserName(), loginVo.getPassword());
return Result.success(token);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!