Java开发工具

利用 JSR303进行后台校验:

2020-02-07  本文已影响0人  刘小刀tina

后端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);
    }
}

上一篇下一篇

猜你喜欢

热点阅读