1.页面分析

1)url分析

image.png

2)参数分析

image.png

3)页面JS分析
 /**
  * $.post(url地址,参数,回调函数)
  * ajax参数传递的类型有几种:
  * 1.json格式  {"id":"1","name":"tomcat"}
  * 2.字符串拼接 "id=1&name='tomcat'"
 */
        $.post("/item/save",$("#itemAddForm").serialize(), function(data){
            if(data.status == 200){
                $.messager.alert('提示','新增商品成功!');
            }else{
                $.messager.alert("提示","新增商品失败!");
            }
        });
4)在jt-common模块中创建SysResult VO对象
package com.jt.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
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);
    }
}
5)编辑ItemController
/**
 * 业务需求: 
 *        完成商品的入库 
 * 
 * 注意事项: 
 *     1。方法出错添加try catch 
 *     2。新增商品的状态信息 为1 
 *     3。入库操作时间 完成和更新的时间 
 * 
 * 请求参数: 
 * 1。url地址:/item/save 
 * 2。请求参数: from表单 对象接收 
 * 3。返回值 系统级别的时间 
 *
 /
 @RequestMapping("save")
 public SysResult saveItem(Item item){
   try {
      itemService.saveItem(item);
      return SysResult.success();
   }catch(Exception e){
      e.printStackTrace();
      return SysResult.fail();
   }
}
6)编辑ItemService
@Override
public void saveItem(Item item) {
   //思考:如果每次编辑数据库 每次都需要操作公共的属性...
 Date date = new Date();
   item.setStatus(1).setCreated(date).setUpdated(date);
   //item.setStatus(1).setCreated(new Date()).setUpdated(item.getCreated);
 itemMapper.insert(item);
}

2.定义全局的异常处理机制

说明:在jt-common中 添加全局异常处理机制.

package com.jt.aop;

import com.jt.vo.SysResult;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

@RestControllerAdvice  //定义全局异常处理
public class SystemException {

    //遇到运行时异常时方法执行.
    @ExceptionHandler({RuntimeException.class})
    public Object fail(Exception e){
        e.printStackTrace();    //输出异常信息.
        return SysResult.fail();
    }
}

3.自动填充功能(created&updated)

业务需求:更新时间/创建时间,每个业务操作时都需要更新相关数据,能否将数据进行优化,简化程序调用.

@Override
 public void saveItem(Item item) {
      //思考:如果每次编辑数据库 每次都需要操作公共的属性...
    Date date = new Date();
    item.setStatus(1); //默认是正常状态 0是下架状态
    //  .setCreated(date).setUpdated(date);
    //item.setStatus(1).setCreated(new Date()).setUpdated(item.getCreated);       
    itemMapper.insert(item);
   }

优化:在jt-common中的BasePojo指定填充属性

//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;
}

-->说明:在jt-common中 编辑配置类,实现自动填充功能.

@Component //将对象交给spring容器管理
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        Date date = new Date();//保证时间一致
        this.setInsertFieldValByName("created", date,metaObject);
        this.setUpdateFieldValByName("updated",date,metaObject);
    }
    @Override
    public void updateFill(MetaObject metaObject) {
        this.setUpdateFieldValByName("updated", new Date(),metaObject);
    }
}

潘绍龙
1 声望0 粉丝