后端JSR303校验:
第一. 先导入包hibernate validator
<!--后端JSR303校验依赖包-->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.9.Final</version>
</dependency>
ps : 其实我发现Springboot starter启动类的jar包中已经集成了!!
第二. 基本注解介绍:
限制 说明
@Null 限制只能为null
@NotNull 限制必须不为null
@AssertFalse 限制必须为false
@AssertTrue 限制必须为true
@DecimalMax(value) 限制必须为一个不大于指定值的数字
@DecimalMin(value) 限制必须为一个不小于指定值的数字
@Digits(integer,fraction) 限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction
@Future 限制必须是一个将来的日期
@Max(value) 限制必须为一个不大于指定值的数字
@Min(value) 限制必须为一个不小于指定值的数字
@Past 限制必须是一个过去的日期
@Pattern(value) 限制必须符合指定的正则表达式
@Size(max,min) 限制字符长度必须在min到max之间
@NotEmpty 验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0)
@NotBlank 验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的空格
@Email 验证注解的元素值是Email,也可以通过
@NotEmpty:作用在String、collection、map、数组上,不能为null,size > 0
第三:项目中的使用
. 实体类上加注解
package com.tina.springboot.springboot.entity;
import lombok.Data;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.io.Serializable;
@Data
public class Employee implements Serializable {
//@NotNull
private String empId;
@NotNull
@Pattern(regexp = "[\\u4E00-\\u9FA5]{2,5}(?:·[\\u4E00-\\u9FA5]{2,5})*",message = "姓名不合法")
private String empName;
// @NotNull
private String gender;
//@NotNull
@Email(message = "不符合邮箱格式")
private String email;
//@NotNull
private String createTime;
//@NotNull
private String depId;
//@NotNull
private String delFlag;
}
3。在controller类上加注解
@RestController
@Api(value = "Employee模块")
@RequestMapping("/test")
@CrossOrigin
@Sf4j
public class EmployeeController {
@Autowired
private EmployeeService employeeService;
// 添加员工 //对名字和邮箱进行校验,不存在数据方可以储存,
@PostMapping(value = "/addEmp")
@ApiOperation(value = "添加员工")
public EntityResp<Object> addEmp(@Valid @RequestBody Employee employee,
BindingResult bindingResult){
log.info(">>>>实体类信息为:>>>>{}", JSON.toJSONString(validEntity));
//(1)谨慎点可以来一次判断
if(bindingResult.hasErrors()){
return new EntityResp<>("对名字和邮箱进行JSR303校验失败",Code.SERVER_OTHER_ERROR);
}else {
return employeeService.addEmp(employee);
}
//(2)如果配置有全局异常捕获 无须判断
return employeeService.addEmp(employee);
}
}//类的大括号
@RestController
@Slf4j
public class TestValidController {
@PostMapping(value = "/valid")
public ApiResult valid(@Valid @RequestBody ValidEntity validEntity) {
log.info(">>>>实体类信息为:>>>>{}", JSON.toJSONString(validEntity));
return ApiResult.ok(validEntity);
}
}
网友评论