@Pattern,@NotBlank

1. @NotBlank:非空神器

意思: 只能用于 String 。它要求字符串既不能为 null,长度也必须大于 0,且不能全是空格。

  • 对比:

    • @NotNull: 只要不是 null 就算过。"" (空字符串) 能通过。

    • @NotEmpty: 不能为 null 且长度 > 0。" " (全是空格) 能通过。

    • @NotBlank : 最严格。null、""、" " 统统不准过。

使用场景: 用户名、密码、地址等必填文本。


2. @Pattern:正则大杀器

意思: 验证字符串是否符合你定义的 正则表达式。

  • 属性: regexp 传入正则表达式。

使用场景: 手机号、邮箱、身份证号、邮编等有固定格式的字符串。


3. 实战代码演示

假设你要写一个用户注册的接口,你的 DTO(数据传输对象)应该长这样:

Java

复制代码
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;

public class UserRegisterDTO {

    @NotBlank(message = "用户名不能为空")
    private String username;

    @NotBlank(message = "手机号不能为空")
    @Pattern(
        regexp = "^1[3-9]\\d{9}$", 
        message = "手机号格式不正确"
    )
    private String phoneNumber;

    // 省略 getter/setter
}

关键点: 要想让这些注解生效,你在 Controller 的方法参数前必须加上 @Valid 或 @Validated 注解!

Java

复制代码
@PostMapping("/register")
public Result register(@Validated @RequestBody UserRegisterDTO dto) {
    // 如果校验失败,Spring 会直接抛出异常或返回 400,根本进不到这一行
    return Result.success();
}
相关推荐
知行EDI6 小时前
知行之桥 MaBang 端口使用指南——Create Order 订单创建篇
java·服务器·数据库
成旭先生6 小时前
【2026】企业信息模糊查询 API 实战:名称、注册号、统一社会信用代码、企业类型与法人一次查全
服务器·数据库·数据服务
JosieBook6 小时前
【数据库】MySQL 实战精通系列 · 第10篇:分库分表与分布式事务实战
数据库·分布式·mysql
我叫洋洋7 小时前
Cadence CIS 元器件库合并实战:3000+ 焊盘、156 个符号零冲突并入自有库
数据库·单片机·嵌入式硬件·oracle·电路
AI 编程助手GPT7 小时前
GPT-6 Luna (Batch) 批量处理性能与质量深度评测
数据库·gpt·batch
quweiie8 小时前
Neo4j Community 安全访问配置总结
数据库·centos·neo4j
꯭自꯭闭꯭9 小时前
DM7主备升级方案
linux·服务器·数据库
蜗牛互联网9 小时前
MongoDB Atlas Agent Engine之后,如何用版本门禁防止陈旧写入
java·数据库·人工智能·后端·mongodb
IvorySQL9 小时前
PostgreSQL 日报 |PostgreSQL 19 Beta 4 发布(9 月 25 日)
数据库·postgresql
科技研学社10 小时前
绿色合规时代,碳足迹与ESG倒逼服装工厂工序升级
数据库·人工智能