@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();
}
相关推荐
城管不管15 小时前
重生——第十一次面试之挖财一面2026.8.19已OC
java·服务器·jvm·数据库·spring·面试·职场和发展
倔强的石头10615 小时前
向量数据库从相似度检索走向融合数据底座
数据库
今天AI了吗16 小时前
Python 基础语法(一):常量、变量、输入输出与运算符
开发语言·数据库·人工智能·python·sql·深度学习·机器学习
夜雪一千17 小时前
MySQL 全局锁是什么?原理、风险、备份踩坑完整实战
android·mysql·adb
lilian23317 小时前
Harmony os 技术实战|拼豆制图27:用单字符编码承载 50 张 70×70 图纸
前端·数据库·华为·harmonyos
皮卡丘不断更17 小时前
手机优先的 Personal Ledger:把账目、学习和复盘放到同一个入口
数据库·sqlite·fastapi·开源项目·个人效率
保卫大狮兄18 小时前
设备管理从台账到报废,完整生命周期一次讲清
数据库·设备管理·设备
数据安全技术观察19 小时前
数据动态脱敏:让脱敏策略跟着数据目录走
大数据·网络·数据库
小席是个热心肠19 小时前
Redis的自我学习
数据库·redis·学习
2601_9657984720 小时前
Salient Theme Setup Guide for Fast Creative WordPress Sites
数据库·web3·php·wordpress