参数验证
工程基于 Spring Boot 3,校验 API 使用 jakarta.validation(如 jakarta.validation.constraints.NotBlank),通过 spring-boot-starter-validation 引入。
注解位置
| 注解 | 常用位置 |
|---|---|
@Validated | 类、方法、方法参数(Spring 提供的校验触发) |
@Valid | 方法参数、嵌套对象字段(标准 Bean Validation) |
分组校验(ValidatedGroupConfig)
项目内分组接口:com.sxpcwlkj.framework.config.ValidatedGroupConfig
| 标记接口 | 含义 |
|---|---|
ValidatedGroupConfig.insert | 新增 |
ValidatedGroupConfig.update | 修改 |
ValidatedGroupConfig.del | 删除 |
ValidatedGroupConfig.query | 查询 |
在 Bo 字段上使用 groups = { ValidatedGroupConfig.xxx.class, ... },在 Controller 入参上使用 @Validated(ValidatedGroupConfig.xxx.class) 启用对应分组。
示例(与 SysSmsBo 等一致):
java
@NotBlank(message = "手机号不能为空",
groups = {ValidatedGroupConfig.query.class, ValidatedGroupConfig.del.class})
private String phone;java
@PostMapping("/list")
public TableDataInfo<SysUserVo> listPage(
@RequestBody @Validated(ValidatedGroupConfig.query.class) SysUserBo bo) {
return baseService.selectPageUserList(bo, bo.getPageQuery());
}常用约束简述
@NotEmpty:集合、数组、Map、CharSequence 非 null 且非空。@NotBlank:字符串去空白后非空(仅适用于字符串)。@NotNull:非 null。@Min/@Max:数值下限/上限。@Size:集合、数组、字符串、Map 长度范围。@Length:字符串长度(来自 Hibernate Validator 扩展,与 starter-validation 一同使用)。
分组与嵌套:@Valid 适合嵌套对象校验;@Validated 支持分组但不直接支持嵌套(以 Spring / Hibernate Validator 文档为准)。
依赖说明
请使用 spring-boot-starter-validation(版本由 Spring Boot BOM 管理),无需手写旧版 javax.validation 坐标。
xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>文档示例勘误
历史示例中存在 Integer[] ids 却标注 @NotBlank 等错误,属笔误;数组、集合请使用 @NotEmpty 或 @Size 等合适约束。
