商品的增长操做-全局异常处理

页面分析

url分析
image.png
页面JS分析
image.pngjava

业务实现

SysResult VO对象的建立

主要目的是为了与页面进行交互web

package com.jt.vo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

//SysResult 主要的目的是为了与页面进行交互.  ajax/json
@Data
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
public class SysResult {

    private Integer status;  //200成功   201 失败
    private String  msg;     //服务器提示信息   成功  失败
    private Object  data;    //服务器返回值数据.

    //能够利用static的静态方法 将数据动态返回
    public static SysResult fail(){

        return new SysResult(201, "业务执行失败", null);
    }

    /**
     *  1.只须要返回状态码信息   200
     *  2.须要返状态及业务数据   200/data
     *  3.返回提示信息/data业务数据
     * @return
     */
    public static SysResult success(){

        return new SysResult(200, "业务执行成功!", null);
    }
    //String json = "{key:value}"
    public static SysResult success(Object data){

        return new SysResult(200, "业务执行成功!", data);
    }

    //只想返回提示信息
    public static SysResult success(String msg,Object data){

        return new SysResult(200, msg, data);
    }
}

编辑ItemController

image.png

编辑ItemService

image.png

全局异常处理机制

业务需求

代码中频繁的try-catch 会致使代码的可读性差,代码的不易维护……
image.pngajax

定义全局异常的处理机制

import com.cn.jt.vo.SysResult;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
/**
 * @program: jt
 * @description:定义全局异常处理类 AOP-异常通知
 * @author: zhu Xia
 * @create: 2020-09-28 15:34
 **///@ControllerAdvice//拦截Controller层
//@ResponseBody
@RestControllerAdvice//两个注解二合一
public class SystemAop {
 /**
 * 定义全局异常的方法 当遇到了什么异常时,程序开始执行
 * 一旦发生异常,则应该输出异常信息,以后返回错误数据便可
 */
 @ExceptionHandler({RuntimeException.class})
 public Object systemAop(Exception e){
 e.printStackTrace();
 return SysResult.fail();
 }
}

属性自动填充功能

MP自动填充说明

把一些公共的属性提取出出来spring

//pojo类,完成2个任务,2个日期,实现序列化
@Data
@Accessors(chain=true)
public class BasePojo implements Serializable{
    @TableField(fill = FieldFill.INSERT) //入库时自动添加
    private Date created;
    @TableField(fill = FieldFill.INSERT_UPDATE) //入库/更新操做自动添加
    private Date updated;

}

代码自动填充功能

配置apache

package com.jt.config;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.util.Date;

@Component  //将对象交给spring容器管理
public class MyMetaObjectHandler implements MetaObjectHandler {

    @Override
    public void insertFill(MetaObject metaObject) {
        Date date = new Date(); //保证时间一致
        this.setInsertFieldValByName("created", date,metaObject);
        this.setInsertFieldValByName("updated", date,metaObject);
    }

    @Override
    public void updateFill(MetaObject metaObject) {

        this.setUpdateFieldValByName("updated", new Date(), metaObject);

    }
}