@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();
}
相关推荐
toooooop84 小时前
MySQL source导入实战:踩坑记,phpMyAdmin 502、source导入巨慢问题解决
mysql
yuzhiboyouye5 小时前
那xml对应的sql语法,列举一下
xml·数据库·sql
. . . . .5 小时前
乐观锁 vs 悲观锁
数据库·sql
Leo.yuan5 小时前
2026年多数据库实时同步的四种架构方案及工具推荐
数据库·架构
hasty6 小时前
Origin 校验不是身份认证:MySQL MCP Server 漏洞给 AI 平台的警告
数据库·mysql·安全
梦想平凡7 小时前
百游棋牌源代码开发搭建教程(五):房间创建、座位分配与请求幂等实现
前端·javascript·数据库·源代码管理
凤山老林7 小时前
Spring Boot 整合 Flowable 的企业级落地指南
数据库·spring boot·后端·flowable·工作流
企业数字化笔记7 小时前
AI写的系统出现504怎么办?接口超时和数据库慢查询排查
数据库·后端
2601_962218617 小时前
万象生鲜系统订单全生命周期状态同步技术实现业务可视
大数据·数据库·人工智能·python·算法
Wang's Blog8 小时前
Java框架快速入门:Spring Security+OAuth2之用户注册与唯一性校验实现
java·数据库·spring