springboot校验数据

 第一步导入jar

implementation 'org.springframework.boot:spring-boot-starter-validation'

第二步
package com.test.utils;


import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotBlank;
import java.nio.charset.Charset;
import java.util.Calendar;
import java.util.Date;

@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="Demo对象")
public class Demo {
@NotBlank(message = "名称不能为空")
@ApiModelProperty(value = "用户名称")
private String name;
}
第三步建立全局异常
package com.test.config;

import com.test.utils.ResultBean;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.validation.BindException;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@ControllerAdvice
public class GlobalExceptionHandler {


@ExceptionHandler(Exception.class)
@ResponseBody
public ResultBean handleException(Exception e){
return ResultBean.error(500,e.getMessage());
}

@ExceptionHandler(BindException.class)
@ResponseBody
public ResultBean validationErrorHandler(BindException ex) throws JsonProcessingException {
//1.此处先获取BindingResult
BindingResult bindingResult = ex.getBindingResult();
//2.获取错误信息
List<FieldError> fieldErrors = bindingResult.getFieldErrors();
//3.组装异常信息
Map<String,String> message = new HashMap<>();
for (FieldError fieldError : fieldErrors) {
message.put(fieldError.getField(),fieldError.getDefaultMessage());
}
//4.将map转换为JSON
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(message);
//5.返回错误信息
return ResultBean.error(json);
}
}


第四步封装返回对象
package com.test.utils;

import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;

/**
* @author zys
* @since 2021-05-14
*/
@Data
@Accessors(chain = true)
public class ResultBean<T> implements Serializable {

private static final long serialVersionUID = 1L;

public static final int NO_LOGIN = -1;

public static final int SUCCESS = 0;

public static final int FAIL = 1;

private String msg = "success";

private int code = SUCCESS;

private long timestamp;

private T data;

public ResultBean() {
super();
}

public ResultBean(T data) {
super();
this.data = data;
this.timestamp = System.currentTimeMillis();
}

public ResultBean(Throwable e) {
super();
this.msg = e.toString();
this.code = FAIL;
}

public static <T> ResultBean<T> ok(T data){
ResultBean<T> rj = new ResultBean<>();
rj.code = SUCCESS;
rj.msg = "success";
rj.timestamp = System.currentTimeMillis();
rj.data = data;
return rj;
}

public static ResultBean ok(){
ResultBean rj = new ResultBean();
rj.code = SUCCESS;
rj.msg = "success";
rj.timestamp = System.currentTimeMillis();
return rj;
}
public static ResultBean error(String msg){
ResultBean rj = new ResultBean();
rj.code = FAIL;
rj.msg = msg;
rj.timestamp = System.currentTimeMillis();
return rj;
}

public static ResultBean error(int code, String msg){
ResultBean rj = new ResultBean();
rj.code = code;
rj.msg = msg;
rj.timestamp = System.currentTimeMillis();
return rj;
}
}

第五步测试
@PostMapping("addDemo")
@ApiOperation(value = "校验数据", httpMethod = "POST")
public ResultBean addDemo(@RequestBody @Validated Demo demo){
return ResultBean.ok();
}
posted @ 2021-06-03 14:16  zysnba  阅读(112)  评论(0)    收藏  举报