SpringBoot2整合validation参数校验案例

一、相关依赖

        <!--数据校验-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>

二、案例代码

入参bean

package com.ks.feecontrol.pojo.query;

import lombok.Data;

import javax.validation.constraints.*;
import java.io.Serializable;

/**
 * @author Mr.Zheng
 * @program: ks-platform
 * @description: 新增
 * @date 2020-06-08 10:33
 */
@Data
public class ColDeptAdd implements Serializable {
    /**
     * 科室id
     */
    @NotNull(message = "科室id不能为空")
    @NotBlank(message = "科室id不能为空")
    private String deptId;
    /**
     * 父科室id
     */
    @NotNull(message = "父科室id不能为空")
    @NotBlank(message = "父科室id不能为空")
    private String parentId;
    /**
     * 科室名称
     */
    @NotNull(message = "科室名称不能为空")
    @NotBlank(message = "科室名称不能为空")
    private String deptName;
    /**
     * 所属院区编码
     */
    @NotNull(message = "所属院区编码不能为空")
    @NotBlank(message = "所属院区编码不能为空")
    private String hospitalCode;
    /**
     * 所属院区名称
     */
    @NotNull(message = "所属院区名称不能为空")
    @NotBlank(message = "所属院区名称不能为空")
    private String hospitalName;
    /**
     * 1表示启用,0表示禁用
     */
    @NotNull(message = "科室状态不能为空")
    @DecimalMin(value = "0",message = "科室状态只能是0或者1")
    @DecimalMax(value = "1",message = "科室状态只能是0或者1")
    private Integer isValid;
}

 简单用法:

@RestController
@RequestMapping("/colDept")
public class ColDeptController implements ColDeptControllerApi {

    @Autowired
    private ColDeptService colDeptService;

    @Override
    @PostMapping("/addColDept")
    public ResponseResult<Object> addColDept(@Validated @RequestBody ColDeptAdd colDeptAdd, BindingResult bindingResult) {
        ResponseResult<Object> result = new ResponseResult<>();
        List<String> errors = new ArrayList<>();
        if (bindingResult.hasErrors()) {
            List<ObjectError> allErrors = bindingResult.getAllErrors();
            for (ObjectError error : allErrors) {
                errors.add(error.getDefaultMessage());
            }
            result.setRespCode(ResponseBaseEnum.API_ERROR_CODE_0020.getRespCode());
            result.setRespMsg(ResponseBaseEnum.API_ERROR_CODE_0020.getRespMsg());
            result.setSuccess(false);
            result.setData(errors);
            return result;
        }
        result.setRespCode(ResponseBaseEnum.API_ERROR_CODE_0000.getRespCode());
        result.setRespMsg(ResponseBaseEnum.API_ERROR_CODE_0000.getRespMsg());
        result.setSuccess(true);
        result.setData(colDeptService.addColDept(colDeptAdd));
        return result;
    }

}

三、封装全局异常

拦截参数校验:

@ControllerAdvice
public class GlobalExceptionHandler {
    private Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);

    @ExceptionHandler(MethodArgumentNotValidException.class)
    @ResponseBody
    ResponseResult<Object> methodArgumentNotValidException(MethodArgumentNotValidException e) {
        List<ObjectError> fieldErrors=e.getBindingResult().getAllErrors();
        List<String> errors = new ArrayList<>();
        for (ObjectError fieldError : fieldErrors) {
            errors.add(fieldError.getDefaultMessage());
        }
        ResponseResult<Object> result = new ResponseResult<Object>();
        result.failure(ResponseBaseEnum.API_ERROR_CODE_0020);
        result.setData(errors);
        return result;
    }
}

修改简单用法案例案例

@RestController
@RequestMapping("/colDept")
public class ColDeptController implements ColDeptControllerApi {

    @Autowired
    private ColDeptService colDeptService;

    @Override
    @PostMapping("/addColDept")
    public ResponseResult<Object> addColDept(@Validated @RequestBody ColDeptAdd colDeptAdd) {
        ResponseResult<Object> result = new ResponseResult<>();
        result.setRespCode(ResponseBaseEnum.API_ERROR_CODE_0000.getRespCode());
        result.setRespMsg(ResponseBaseEnum.API_ERROR_CODE_0000.getRespMsg());
        result.setSuccess(true);
        result.setData(colDeptService.addColDept(colDeptAdd));
        return result;
    }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值