大彪哥

越努力,越幸运!

JSR 303 常用注解及示例

JSR 303 常用注解及示例

✅ JSR 303 常用注解及示例

注解 作用 示例
@NotNull 值不能为 null @NotNull(message = "ID不能为空")
@NotBlank 字符串不能为空(非 null 且去除空格后长度 > 0) @NotBlank(message = "用户名不能为空")
@NotEmpty 集合、数组、字符串不能为空(非 null 且 size > 0) @NotEmpty(message = "列表不能为空")
@Size 限制字符串、集合、数组的长度或大小 @Size(min = 2, max = 10, message = "长度必须在2到10之间")
@Min / @Max 限制数字的最小值和最大值 @Min(1) @Max(100)
@Positive / @PositiveOrZero 必须是正数 / 正数或零 @Positive(message = "价格必须大于0")
@Negative / @NegativeOrZero 必须是负数 / 负数或零 @Negative(message = "余额必须为负")
@Email 校验邮箱格式 @Email(message = "邮箱格式不正确")
@Pattern 使用正则表达式校验字符串 @Pattern(regexp = "\\d{11}", message = "手机号必须是11位数字")
@AssertTrue / @AssertFalse 必须为 true / false @AssertTrue(message = "必须同意协议")
@Future / @Past 时间必须是未来 / 过去 @Future(message = "时间必须是未来")
@Digits 限制数字的整数位和小数位 @Digits(integer = 5, fraction = 2)
@DecimalMin / @DecimalMax 限制小数的最小值 / 最大值 @DecimalMin("0.01")

📘 示例:用户注册 DTO

import jakarta.validation.constraints.*;

public class UserDTO {

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

    @Email(message = "邮箱格式不正确")
    private String email;

    @Size(min = 6, max = 20, message = "密码长度必须在6到20之间")
    private String password;

    @Min(value = 18, message = "年龄不能小于18岁")
    @Max(value = 100, message = "年龄不能超过100岁")
    private Integer age;

    @Pattern(regexp = "\\d{11}", message = "手机号必须是11位数字")
    private String phone;

    @AssertTrue(message = "必须同意用户协议")
    private Boolean agreed;
}

🧠 小贴士

  • 所有注解都支持 message 属性自定义错误提示
  • 嵌套对象需要加 @Valid 才能递归校验
  • 方法参数校验需要在类上加 @Validated

posted on 2025-11-02 14:59  大彪哥55  阅读(8)  评论(0)    收藏  举报

导航