0
点赞
收藏
分享

微信扫一扫

六、SpringBoot入门之表单验证(@valid注解)

(一)背景介绍
  表单验证就是对前端传过来的参数进行验证,若不符合规范,可以禁止后续操作,且显示规范中的异常信息。

(二)使用流程
  我们以向girl表中添加数据为例进行讲解。
  1.girl表

CREATE TABLE `girl` (
`id` int(11) NOT NULL,
`age` int(11) DEFAULT NULL,
`cup_size` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;

  2.girl类

@Entity
public class Girl {
@Id
@GeneratedValue
private Integer id;

private String cupSize;

@Min(value = 18, message = "18岁以下禁止入内!")
private Integer age;

/**
* 当查询的时候返回的实体类是一个对象实例,是hibernate动态通过反射生成的,
* hibernate框架会调用这个默认构造方法来构造实例对象。
* 若有多个构造方法,无参构造方法必须有;若无其他构造方法,则无参构造方法可以不写,
* 因为类默认会有一个无参构造方法
*/
public Girl() {
}

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public String getCupSize() {
return cupSize;
}

public void setCupSize(String cupSize) {
this.cupSize = cupSize;
}

public Integer getAge() {
return age;
}

public void setAge(Integer age) {
this.age = age;
}
}

  上述代码中,我们对成员变量“age”加了注解​​@Min(value = 18, message = "18岁以下禁止入内!")​​​,这就是我们的自定义的验证规则:最小值18,当小于18时,异常信息就是”18岁以下禁止入内!”。这个​​@Min​​​注解是​​import javax.validation.constraints.Min;​​​包下的,不是Hibernate的。
  3.校验

/**
* 增
* “@Valid”开启校验
* BindingResult:存放校验结果
*/
@PostMapping("/girls")
public Girl addGirl(@Valid Girl girl, BindingResult bindingResult){
//若不符合约束
if (bindingResult.hasErrors()){
//获取不符合约束时,自定义的异常信息
System.out.println(bindingResult.getFieldError().getDefaultMessage());
return null;
}
return girlService.addGirl(girl);
}

  定义了校验规则以后,我们需要配合“@Valid”注解,来开启校验,校验结果会存到“BindingResult”中。

(三)注意
  以上的“@Min”、“@Valid”注解和“BindingResult”对象都是​​​javax.validation.Valid​​包下的,与使用哪种数据库无关。


举报

相关推荐

0 条评论