1.页面分析
1)url分析
2)参数分析
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);
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。