Validation实现字段校验

JSR-303,正式名称为Bean Validation,是Java ee 6中的一项子规范,专注于JavaBean的验证。它提供了一套元数据模型和API,允许你通过注解的方式对JavaBean的字段进行约束验证,以确保数据的正确性。这些注解可以直接添加到Java类的属性上,也可以添加到方法、构造函数、参数或类上


  • 空检查

    • @Null:校验对象是否为null

      1
      2
      @Null(message = "账号不能为空")
      private String account;
    • @NotNull:校验对象是否不为null,无法检查长度为0的字符串

      1
      2
      @NotNull(message = "姓名必须提供")
      private String name;
    • @NotBlank:校验字符串是不是Null还有被trim的长度是否大于0,只对字符串,还会去掉前后空格

      1
      2
      @NotBlank(message = "用户名不能为空,且不能只有空格")
      private String username;
    • @NotEmpty:校验元素是否为Null或者Empty

      1
      2
      @NotEmpty(message = "邮箱地址必须提供")
      private String email;
  • Boolean检查

    • @AssertTrue:被注释的元素必须为true

      1
      2
      @AssertTrue(message = "必须接受服务条款")
      private boolean acceptTerms;
    • @AssertFalse:被注释的元素必须为false

      1
      2
      @AssertFalse(message = "必须拒绝此选项")
      private boolean declineOption;
  • 长度检查

    • @Size(min= ,max=):被注释的元素的大小必须在指定的范围内,适用于StringCollectionMap和数组

      1
      2
      @Size(min = 6, max = 20, message = "密码长度必须在6到20个字符之间")
      private String password;
    • @Length(min= ,max=):指定字符串的长度区间

      1
      2
      @Length(min = 3, max = 50, message = "评论长度必须在3到50个字符之间")
      private String comment;
  • 日期检查

    • @Past:校验DataCalendar对象是否在当前时间之前,表明这个时间字段要是已经过去的时间

      1
      2
      @Past(message = "生日必须是过去的日期")
      private Date birthDate;
    • @Future:校验DataCalendar对象是否在当前时间之后,表明这个时间字段要是未来时间

      1
      2
      @Future(message = "预定日期必须是未来的日期")
      private Date reservationDate;
    • @Pattern:校验String对象是否符合预期的正则表达式规则,表明这个字段要符合一定的正则表达式规则,regexp 属性定义了电子邮件的正则表达式,而 message 属性定义了当校验失败时返回的错误消息

      1
      2
      @Pattern(regexp = "^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$", message = "电子邮件地址格式不正确")
      private String email;
  • 数值检查

    • @Min:被校验的数字要大于这个值

      1
      2
      @Min(value = 18, message = "年龄必须至少为18岁")
      private int age;
    • @Max:被校验的数字要小于这个值

      1
      2
      @Max(value = 100, message = "年龄不能超过100岁")
      private int maxAge;
    • @DecimalMax:被校验的数字要小于这个值

      1
      2
      @DecimalMax(value = "100.00", message = "价格不能超过100.00")
      private BigDecimal price;
    • @DecimalMin:被校验的数字要大于这个值

      1
      2
      @DecimalMin(value = "0.01", message = "价格不能低于0.01")
      private BigDecimal minPrice;
    • @Digits:用于验证数值类型的字段是否符合指定的整数位数和小数位数

      1
      2
      @Digits(integer = 3, fraction = 2, message = "金额必须是整数3位和小数2位")
      private BigDecimal amount;
    • @Range(min=, max=):被校验的字段要在合适的范围之内

      1
      2
      @Range(min = 1, max = 10, message = "评分必须在1到10之间")
      private int rating;
  • 其它正则校验

    • @CreditCardNumber:用来校验信用卡

      1
      2
      @CreditCardNumber(message = "信用卡号码格式不正确")
      private String creditCardNumber;
    • @Email:校验是否是邮箱地址,如果值为Null也校验通过

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

Validation实现字段校验
https://lzhengjy.github.io/2024/09/11/Validation实现字段校验/
作者
Zheng
发布于
2024年9月11日
许可协议