| name | java-validation-annotations |
| description | Provides JSR-380 validation annotation standards for Java fields including @Pattern, @NotBlank, @NotNull. Invoke when generating VO classes or adding validation to Java fields. |
Java验证注解规范
本技能提供Java字段验证注解的标准规范,包括常用的@Pattern正则表达式验证和其他JSR-380验证注解。
常用验证注解
@Pattern正则表达式验证
| 验证类型 | 正则表达式 | 用途 | 示例 |
|---|
| 整数或小数 | DataPattern.DECIMAL | 验证字段必须是整数或小数 | 123、12.34、-56.78 |
| 数字和字母 | DataPattern.NUMBER_LETTER | 验证字段只能包含数字和字母 | abc123、XYZ789 |
| 纯数字 | DataPattern.NUMBER | 验证字段只能是数字 | 123、456、789 |
| 日期格式 | DataPattern.DATE2 | 验证日期格式(yyyy-MM-dd) | 2024-01-15 |
| 时间格式 | DataPattern.DATE_TIME1 | 验证时间格式(yyyy-MM-dd HH:mm:ss) | 2024-01-15 14:30:00 |
| 手机号 | DataPattern.MOBILE_PHONE | 验证中国大陆手机号格式 | 13800138000 |
| 固话 | DataPattern.FIXED_PHONE | 验证中国大陆固定电话格式 | 010-12345678 |
| 邮箱 | DataPattern.EMAIL | 验证邮箱地址格式 | user@example.com |
| 身份证 | DataPattern.ID_CARD | 验证中国大陆身份证号码格式 | 110101199001011234 |
其他常用验证注解
| 注解 | 用途 | 适用场景 |
|---|
| @NotBlank | 验证字符串不能为null或空字符串 | 必填的字符串字段 |
| @NotNull | 验证对象不能为null | 必填的对象字段(包括包装类型) |
| @Min/@Max | 验证数值在指定范围内 | 年龄、数量、金额等有范围要求的字段 |
| @Size | 验证字符串、集合或数组的长度 | 密码、用户名、备注等有长度要求的字段 |
| @Email | 快速验证邮箱格式(不依赖DataPattern) | 简单的邮箱验证需求 |
| @Pattern | 自定义正则表达式验证 | 特殊的格式要求 |
验证注解使用规范
注解位置
错误消息
- message属性:必须提供中文错误提示
- 消息规范:简洁明了,便于用户理解
- 示例:"请输入用户名"、"手机号格式不正确"
分组验证
- 根据不同场景应用不同的验证规则
- 适用于创建和更新场景验证规则不同
组合验证
注意事项
-
空值处理:@NotBlank和@NotNull的区别
- @NotBlank:字符串不能为null或空字符串
- @NotNull:对象不能为null
-
正则表达式:使用DataPattern常量
-
错误消息:必须使用中文
-
验证顺序:按业务逻辑顺序排列
-
性能考虑:复杂正则可能影响性能
最佳实践
- 统一管理:将常用的正则表达式定义为常量(如DataPattern)
- 明确提示:错误消息要明确指出问题所在
- 合理分组:使用验证分组处理不同场景
- 组合使用:合理组合多个验证注解
- 测试覆盖:确保所有验证规则都有对应的测试用例