1、直接在实体类字段中添加注解
2、在bean中加上校验注解
3、自动会出现400提示,重新构造提示信息
@RequestMapping("/save")
public R save(@Valid @RequestBody BrandEntity brand, BindingResult result){
Map map = new HashMap();
//获取校验结果
if(result.hasErrors()){
result.getFieldErrors().forEach(item->
{
String message = item.getDefaultMessage();
String filed = item.getField();
map.put(filed,message);
});
return R.error(400,"提交数据不合法").put("data",map);
}else{
brandService.save(brand);
}
return R.ok();
}
package com.atguigu.gulimall.product.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
import org.hibernate.validator.constraints.URL;
import javax.validation.constraints.*;
/**
* 品牌
*
* @author lihongtao
* @email 1485942652@qq.com
* @date 2021-08-19 11:06:54
*/
@Data
@TableName("pms_brand")
public class BrandEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 品牌id
*/
@TableId
private Long brandId;
/**
* 品牌名
*/
@NotBlank(message = "品牌名不能为空")
private String name;
/**
* 品牌logo地址
*/
@NotEmpty
@URL(message = "logo必须是一个合法的url地址")
private String logo;
/**
* 介绍
*/
private String descript;
/**
* 显示状态[0-不显示;1-显示]
*/
private Integer showStatus;
/**
* 检索首字母
*/
@Pattern(regexp = "/^[a-zA-Z]$/",message = "检索首字母必须是一个字母")
private String firstLetter;
/**
* 排序
*/
@NotNull
@Min(value =0,message = "排序必须大于等于0")
private Integer sort;
}
4、postman测试成功
5、单独写一个controller来处理异常,使用springmvc提供的注解@RestControllerAdvice
package com.atguigu.gulimall.product.exception;
import com.atguigu.common.exception.BizCodeEnume;
import com.atguigu.common.utils.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import java.util.HashMap;
import java.util.Map;
/**
* @author lht
* @create 2021/8/20 0020
* description:统一异常处理
**/
@Slf4j
//@ResponseBody
@RestControllerAdvice(basePackages = "com.atguigu.gulimall.product.controller")
public class GulimallExceptionControllerAdvice {
//具体的异常使用此方法抛出
@ExceptionHandler(value = MethodArgumentNotValidException.class)
public R handleVaildException( MethodArgumentNotValidException e ){
log.error("数据校验出现问题{}",e.getMessage(),e.getClass());
BindingResult bindingResult = e.getBindingResult();
Map map = new HashMap();
bindingResult.getFieldErrors().forEach(fieldError -> {
map.put(fieldError.getField(),fieldError.getDefaultMessage());
});
return R.error(BizCodeEnume.VAILD_EXCEPTION.getCode(),BizCodeEnume.VAILD_EXCEPTION.getMsg()).put("data",map);
}
@ExceptionHandler(value = Throwable.class)
public R handleException(Throwable throwable){
return R.error();
}
}