springboot使用JSR303校验

jsr303校验主要是通过注解的方法对注入的实体类是否符合规则进行校验,例如,一个name字段数据,如果我们再controller方法中需要进行判断该属性的长度为2-10个长度,这原始的代码需要写成

if(null==name){

}else if(name<3){
return "长度过短";
}else if(name.length()>10){
return "长度过长";
}

这只是才一个字段的校验规则,就需要这么多的if…else进行判,如果加上其他字段的判段呢,age,email,telphone,等等,则需要写上听过的if…else进行判断;如果是jsr303进行校验则会简便许多。只需要再实体类中添加需要校验规则的注解即可实现。

jsr303依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

实体类注解,关键是 对应校验规则注解,和类中的@Valid注解

@Data
@Builder
@Valid
@NoArgsConstructor
public class User {
    @NotEmpty
    long  id;
    @Range(min = 10,max = 100,message = "长度不符合规则")
    String userName;
    @Email
    String email;
    long  phoneNumber;
    String description;
}

测试:

 User user=new User();
//这里我设置长度为1,和上面的注解定义的长度不相符会报错。
 user.setUserName("1");

不符合规则,程序报错如下

Error:(18, 1) java: 无法将类 com.example.demo.entity.User中的构造器 User应用到给定类型;
  需要: 没有参数
  找到: long,java.lang.String,java.lang.String,long,java.lang.String
  原因: 实际参数列表和形式参数列表长度不同

常见的JSR303注解()

注解            功能
@Notnull    验证对象是否不为mul,无法检査长度为0的字符串,于验证基本数据类型
@Null    验证对象是否为null
@AssertTrue    验证 Boolean对象是否为true
@AssertFalse    验证 Boolean对象是否为false
@Max(value)    验正NumberString对象是否小于等于指定的值
@Min(value)    验正NumberString对象是否大于等于指定的值
@DecimalMax(value)    被标注的值必须不大于约束中指定的最大值。这个约束的参数是一个通过 Big Decimal定义的最大值的字符串表示,小数存在精度
@DecimalMin(value)    被标注的值必须不小于约束中指定的最小值。这个约束的参数是一个通过 Big Decimal定义的最小值的字符串表示,小数存在精度
@Digits(integer, fraction)    验证字符串是否是符合指定格式的数字, Interger指定整数精度, fraction指定小数精度
@Size(min, max)    验证对象(ArrayCollectionMapString)长度是否在给定的范围之内
@Past    验证DateCalendar对象是否在当前时间之前
@Future    验证DateCalendar对象是否在当前时间之后
@Pattern    验证 String对象是否符合正则表达式的规则
@NotBlank    检查约束字符串是不是Null,被Trim的长度是否大于0。只对字符串,且会去掉前后空格
@URL    验证是否是合法的url
@Email    验证是否是合法的邮件地址
@CreditCardNumber    验证是否是合法的信用卡号码
@Length(min, max)    验证字符串的长度必须在指定的范围内
@NotEmpty    检査元素是否为NULL或者 EMPTY。用于ArrayCollectionMapString
@Range(min, max, message)    验证属性值必须在合适的范围内
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值