一、引入依赖
<!-- 验证参数 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency>
二、全局异常捕捉类
package com.cqec.admin.advice;
import com.cqec.common.base.BaseResult;
import com.cqec.common.constant.PlatforEnums;
import com.cqec.common.exception.BusinessException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.dao.OptimisticLockingFailureException;
import org.springframework.http.HttpStatus;
import org.springframework.validation.BindException;
import org.springframework.validation.ObjectError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import javax.servlet.http.HttpServletRequest;
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import java.util.stream.Collectors;
/**
* <p>
* 业务异常统一拦截处理
* </p>
*
* @author woo
* @since 2019/12/29
*/
@RestControllerAdvice
@Slf4j
public class UnityExceptionHandler {
/**
* 分割符
*/
private static final String SEP_COMMA = ",";
/**
* bean参数验证 带requestbody的方式.
*
* @param ex RuntimeException
* @return String
*/
@ExceptionHandler(MethodArgumentNotValidException.class)
public BaseResult validExceptionHandler(MethodArgumentNotValidException ex) {
return BaseResult.fail(HttpStatus.BAD_REQUEST.value()+"", ex.getBindingResult().getAllErrors().stream().map(ObjectError::getDefaultMessage)
.collect(Collectors.joining(",")));
}
/**
* bean参数验证.
*
* @param ex RuntimeException
* @return String
*/
@ExceptionHandler(BindException.class)
public BaseResult validExceptionHandler(BindException ex) {
return BaseResult.fail(HttpStatus.BAD_REQUEST.value()+"", ex.getAllErrors().stream().map(ObjectError::getDefaultMessage)
.collect(Collectors.joining(SEP_COMMA)));
}
/**
* 单个参数验证.
*
* @param ex RuntimeException
* @return String
*/
@ExceptionHandler(ConstraintViolationException.class)
public BaseResult validExceptionHandler(ConstraintViolationException ex) {
return BaseResult.fail(HttpStatus.BAD_REQUEST.value()+"", ex.getConstraintViolations().stream().map(ConstraintViolation::getMessage)
.collect(Collectors.joining(SEP_COMMA)));
}
}
三、准备实体类和controller
实体类
package com.cqec.admin.mapper.entity;
import javax.validation.constraints.NotBlank;
import java.util.Date;
@Data
public class User{
/**
* id
*/
private Long id;
/**
* 名字
*/
@NotBlank(message = "名字不能为空")
private String name;
/**
* 电话号码
*/
@NotBlank(message = "电话号码不能为空")
private String phone;
}
controller类
import com.cqec.admin.manager.TokenManager;
import com.cqec.admin.mapper.entity.ChildWaterMeterTable;
import com.cqec.admin.request.ChildWaterMeterInfoPageRequestVO;
import com.cqec.admin.request.WaterMeterCoverSendOrderRequest;
import com.cqec.admin.request.WaterMeterDataImageRequestVO;
import com.cqec.admin.resultVO.ChildWaterMeterInfoResultVO;
import com.cqec.admin.resultVO.WaterMeterDataImageResultVO;
import com.cqec.admin.service.WaterMeterCoverService;
import com.cqec.admin.util.TokenUtil;
import com.cqec.common.base.BasePageResultDto;
import com.cqec.common.base.BaseResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List
@RestController
@RequestMapping("/user")
public class WaterMeterCoverController {
/**
* 新增用户
* @param childWaterMeterTable
* @return
*/
@PostMapping("/addWaterMeterCover")
public BaseResult<User> addChildWaterMeter(@Validated @RequestBody User user){
return user;
}
}
如果name和phone不传 会返回
{
"code": "400",
"message": "名字不能为空,电话号码不能为空",
"data": null
}