本文主要介绍上一篇遗留的一些约束注解。
一、内建约束
上一篇介绍了内建约束的大部分,这里还有部分内建约束没有介绍完。
- @Max(value=):检查是否被注解的值是小于等于指定的最大值的。
- 支持的数据类型:BigDecimal, BigInteger, byte, short, int, long和对应的包装类。额外支持HV:任何CharSequence的自类型,还有任何Number和javax.money.MonetaryAmount类型的子类。
- Hibernate 元数据影响:无。
- @Min(value=):功能作用和上面刚好相反
- @NotBlank():检查被注解的字符串是非null的,并且其trimmed之后的串的长度大于零。它和@NotEmpty不同的地方在于,它只能应用在字符串上,而后者对空格字符串,会忽视,不会认为是空。
- 支持的类型:CharSequence。
- Hibernate元数据影响:无。
- @NotEmpty:检查被注解的字符串是否是非null或是empty集合。
- 支持的元素:CharSequence,Collection,Map和数组。
- Hibernate元数据影响:无。
- @NotNull:检查被注解的值是否是非null的。
- 支持的类型:任何类型。
- 元数据影响:列是非空的。
- @Negative:检查元素是否是严格为负的。零值被认为是无效的。
- 支持的类型:BigDecimal, BigInteger, byte, short, int, long和对应的包装类。额外支持HV:任何CharSequence的自类型,还有任何Number和javax.money.MonetaryAmount类型的子类。
- Hibernate元数据影响:无。
- @NegativeOrZero:检查元素是否为负,或等于零。
- 支持的类型:BigDecimal, BigInteger, byte, short, int, long和对应的包装类。额外支持HV:任何CharSequence的自类型,还有任何Number和javax.money.MonetaryAmount类型的子类。
- Hibernate元数据影响:无。
- @Null:检查被注解的值是null。
- 支持的类型:任何类型。
- Hibernate元数据影响:无。
- @Past:检查被注解的date是否在过去。
- 支持的类型:
- java.util.Date,
- java.util.Calendar,
- java.time.Instant,
- java.time.LocalDate,
- java.time.LocalDateTime,
- java.time.LocalTime,
- java.time.MonthDay,
- java.time.OffsetDateTime,
- java.time.OffsetTime,
- java.time.Year,
- java.time.YearMonth,
- java.time.ZonedDateTime,
- java.time.chrono.HijrahDate,
- java.time.chrono.JapaneseDate,
- java.time.chrono.MinguoDate,
- java.time.chrono.ThaiBuddhistDate;
- 另外如果Joda.Time date/time API在类路径中的话,也支持HV。
还有任何实现了ReadablePartial和ReadableInstant的子类。 - Hibernate元数据影响:无。
- 支持的类型:
- @PastOrPresent:检查被注解的date是否在过去或现在。
- 支持的类型:
- java.util.Date,
- java.util.Calendar,
- java.time.Instant,
- java.time.LocalDate,
- java.time.LocalDateTime,
- java.time.LocalTime,
- java.time.MonthDay,
- java.time.OffsetDateTime,
- java.time.OffsetTime,
- java.time.Year,
- java.time.YearMonth,
- java.time.ZonedDateTime,
- java.time.chrono.HijrahDate,
- java.time.chrono.JapaneseDate,
- java.time.chrono.MinguoDate,
- java.time.chrono.ThaiBuddhistDate;
- 另外如果Joda.Time date/time API在类路径中的话,也支持HV。
- 还有任何实现了ReadablePartial和ReadableInstant的子类。
- Hibernate元数据影响:无。
- 支持的类型:
- @Pattern(regex=, flags=):检查被注解的string是否匹配正则表达式regex,同时考虑是否匹配flags。
- 支持的类型:CharSequence。
- Hibernate元数据影响:无。
- @Positive:检查被注解的值是否是严格为正的,零无效。
- 支持的类型:BigDecimal, BigInteger, byte, short, int, long和对应的包装类。额外支持HV:任何CharSequence的自类型,还有任何Number和javax.money.MonetaryAmount类型的子类。
- Hibernate元数据影响:无。
- @PositiveOrZero():检查是否是正的,或是零。
- 支持的类型:BigDecimal, BigInteger, byte, short, int, long和对应的包装类。额外支持HV:任何CharSequence的自类型,还有任何Number和javax.money.MonetaryAmount类型的子类。
- Hibernate元数据影响:无。
- @Size(min=, max=):检查被注解的值是否在min和max(排除的)之间-[min, max)。
- 支持的类型:CharSequence,Collection,Map和数据。
- Hibernate元数据影响:列长度将会被设置进max。