Skip to content

参数验证

工程基于 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 等合适约束。

Released under the MIT License.