javax.validation中数据验证的注解使用与示例
javax.validation
是 Java 提供的一个用于数据验证的库,其中定义了多种用于约束和验证数据的注解。下面对常用的验证注解类进行详细介绍,并提供对应的使用示例,每个注解都配有中文注释以帮助理解。
1. @AssertFalse
表示该属性的值必须为 false
。
public class User {
@AssertFalse(message = "isAdmin 必须为 false")
private boolean isAdmin;
}
2. @AssertTrue
表示该属性的值必须为 true
。
public class User {
@AssertTrue(message = "isActive 必须为 true")
private boolean isActive;
}
3. @DecimalMax
表示该属性的值必须小于或等于指定的最大值(对于浮点型数值)。
public class Product {
@DecimalMax(value = "999.99", message = "价格不能超过999.99")
private BigDecimal price;
}
4. @DecimalMin
表示该属性的值必须大于或等于指定的最小值(对于浮点型数值)。
public class Product {
@DecimalMin(value = "0.1", message = "价格不能小于0.1")
private BigDecimal price;
}
5. @Digits
限制该属性的整数位数和小数位数。
public class Product {
@Digits(integer = 5, fraction = 2, message = "数值格式不正确,整数最多5位,小数最多2位")
private BigDecimal price;
}
6. @Email
表示该属性必须是有效的电子邮件格式。
public class User {
@Email(message = "邮箱格式不正确")
private String email;
}
7. @Future
表示该属性的日期必须是将来的日期。
public class Event {
@Future(message = "日期必须是未来的日期")
private LocalDate eventDate;
}
8. @FutureOrPresent
表示该属性的日期必须是将来或当前日期。
public class Event {
@FutureOrPresent(message = "日期必须是未来或当前日期")
private LocalDate eventDate;
}
9. @Max
表示该属性的值不能大于指定的最大值(对于整数型数值)。
public class Product {
@Max(value = 1000, message = "库存不能超过1000")
private int stock;
}
10. @Min
表示该属性的值不能小于指定的最小值(对于整数型数值)。
public class Product {
@Min(value = 1, message = "库存不能小于1")
private int stock;
}
11. @Negative
表示该属性的值必须为负数。
public class Account {
@Negative(message = "余额必须为负数")
private BigDecimal balance;
}
12. @NegativeOrZero
表示该属性的值必须为负数或零。
public class Account {
@NegativeOrZero(message = "余额必须为负数或零")
private BigDecimal balance;
}
13. @NotBlank
表示该属性不能为 null
,并且必须包含至少一个非空字符。
public class User {
@NotBlank(message = "用户名不能为空")
private String username;
}
14. @NotEmpty
表示该属性不能为 null
,并且不能是空集合或空字符串。
public class User {
@NotEmpty(message = "兴趣列表不能为空")
private List<String> interests;
}
15. @NotNull
表示该属性不能为 null
。
public class User {
@NotNull(message = "年龄不能为空")
private Integer age;
}
16. @Null
表示该属性的值必须为 null
。
public class User {
@Null(message = "ID 必须为空")
private Long id;
}
17. @Past
表示该属性的日期必须是过去的日期。
public class User {
@Past(message = "出生日期必须是过去的日期")
private LocalDate birthDate;
}
18. @PastOrPresent
表示该属性的日期必须是过去或当前日期。
public class User {
@PastOrPresent(message = "注册日期必须是过去或当前日期")
private LocalDate registrationDate;
}
19. @Pattern
表示该属性的值必须符合指定的正则表达式。
public class User {
@Pattern(regexp = "^[a-zA-Z0-9]+$", message = "用户名只能包含字母和数字")
private String username;
}
20. @Positive
表示该属性的值必须为正数。
public class Product {
@Positive(message = "价格必须为正数")
private BigDecimal price;
}
21. @PositiveOrZero
表示该属性的值必须为正数或零。
public class Product {
@PositiveOrZero(message = "库存必须为正数或零")
private int stock;
}
22. @Size
限制集合、数组、字符串的大小或长度。
public class User {
@Size(min = 2, max = 20, message = "用户名长度必须在2到20之间")
private String username;
@Size(min = 1, message = "兴趣列表至少要有一个兴趣")
private List<String> interests;
}
验证注解使用示例
import javax.validation.constraints.*;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
public class User {
@NotNull(message = "ID 不能为空")
private Long id;
@NotBlank(message = "用户名不能为空")
@Size(min = 2, max = 20, message = "用户名长度必须在2到20之间")
private String username;
@Email(message = "邮箱格式不正确")
private String email;
@Past(message = "出生日期必须是过去的日期")
private LocalDate birthDate;
@DecimalMin(value = "0.1", message = "价格不能小于0.1")
@DecimalMax(value = "999.99", message = "价格不能超过999.99")
private BigDecimal price;
@Size(min = 1, message = "兴趣列表至少要有一个兴趣")
private List<String> interests;
@Positive(message = "库存必须为正数")
private int stock;
// Getters and Setters
}
这些注解可以帮助我们在应用程序中简化数据校验逻辑,确保传入的数据符合业务规则。通过 message
属性,我们可以自定义错误消息,从而提高程序的用户友好性。在实际开发中,常常与框架如 Hibernate Validator 结合使用,以便自动化处理数据验证。
版权声明:本文为原创文章,版权归 全栈开发技术博客 所有。
本文链接:https://www.lvtao.net/dev/javax-validation.html
转载时须注明出处及本声明