@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();
}
相关推荐
不脱发的程序猿9 小时前
纳指ETF量化策略
数据库·人工智能·1024程序员节
程序员塔塔喵10 小时前
【MySQL篇|第一篇】索引失效的情况
数据库·mysql·索引失效
paopaokaka_luck10 小时前
宠物门店经营管理系统(销售与库存联动、进货自动记账、 退换与退款关联、员工个人业绩、ECharts 经营分析、滞销识别与客户分层、宠物档案年龄计算)
前端·javascript·spring boot·mysql·echarts·mybatis·1024程序员节
北京青蓝智慧马老师10 小时前
比外部黑客更难防的,是那个有权限的自己人(3 个脱敏复盘)
大数据·数据库·人工智能
笃行35011 小时前
拆一台数据集成产品:KFS 的骨架、肌肉和神经
数据库
4SAPI11 小时前
搭建 AI 数据分析工具大模型 API 选型指南
数据库·人工智能·架构·php·1024程序员节
paopaokaka_luck12 小时前
心理咨询管理系统(WebSocket实时沟通、基于用户的协同过滤、 ECharts多维分析、 预约业务流程、预约校验与定时处理)
java·vue.js·spring boot·mysql·spring·echarts·1024程序员节
码士集团小青12 小时前
面霸篇:高频 Java 基础问题(核心卷一)
linux·服务器·数据库·redis·缓存·1024程序员节
2301_322414280412 小时前
springboot农产品交易平台的设计与实现08055-计算机毕设 原创(免费领源码+部署教程+开发环境)
java·spring boot·redis·mysql·tomcat·maven·mybatis
LMT流氓兔13 小时前
第五单元——第十二课:把脚本整理成项目
java·数据库·python·langchain·1024程序员节