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();
}

浙公网安备 33010602011771号