JSR300 java数据校验

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

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值