Day14-数据的自动填充+用户修改/回显/更新/删除操作+事务+全局异常的处理机制+商品分类业务

本文介绍了使用MybatisPlus实现数据自动填充创建时间和修改时间的功能,详细展示了用户修改、回显、更新和删除操作的实现过程,以及事务管理和全局异常处理机制。同时,还探讨了商品分类业务的实现,包括页面跳转、列表展示和三级菜单的数据结构设计。
摘要由CSDN通过智能技术生成

1. 数据的自动填充

需求: 数据库中每张表里 都包含创建时间/修改时间的字段. 如果每次操作表,都手动的去维护时间信息.则响应开发效率. 能否优化策略.

解决策略: MybatisPlus 实现自动填充功能

包位置 config - MyMetaObjectHandler类

1.1 MPAPI 语法

1.实现元对象处理器接口:com.baomidou.mybatisplus.core.handlers.MetaObjectHandler
2.注解填充字段 @TableField(… fill = FieldFill.INSERT) 生成器策略部分也可以配置!

1.2 创建BasePojo类—实现自动填充 所需字段值

说明: 新增操作 需要自动填充 created/updated.
修改操作 需要自动填充 updated

package com.jt.pojo;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.Date;

//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;	//表示入库/更新时赋值.
}

1.3 添加配置类MyMetaObjectHandler

编辑完成之后,测试代码自动填充是否正常

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

    //当数据库做新增操作时,自动调用  API调用 不需要问为什么
    //metaObject对象 是MP自动填充的配置 有默认行为
    @Override
    public void insertFill(MetaObject metaObject) {
   
        //获取当前时间
        Date date = new Date();
        this.setFieldValByName("created", date, metaObject);
        this.setFieldValByName("updated", date, metaObject);
    }
    //当数据库做修改操作时,自动调用
    @Override
    public void updateFill(MetaObject metaObject) {
   
        //获取当前时间
        Date date = new Date();
        this.setFieldValByName("updated", date, metaObject);
    }
}

2 用户修改–数据回显

2.1 JS代码

	//1. 点击修改的按钮
	 <template slot-scope="scope">
                <el-button type="primary" icon="el-icon-edit" size="small" @click="updateUserBtn(scope.row)"></el-button>
                <el-button type="danger" icon="el-icon-delete" size="small" @click="deleteUser(scope.row)"></el-button>
      </template>
	
	//2. 按钮事件
	 async updateUserBtn(user){
   
        this.updateDialogVisible = true
        const {
   data: result} = await this.$http.get("/user/"+user.id)
        if(result.status !== 200) return this.$message.error("用户查询失败")
        this.updateUserModel = result.data
      },

2.2 查询用户的业务接口

请求路径: /user/{id}
请求类型: GET
返回值: SysResult对象

参数名称 参数说明 备注
status 状态信息 200表示服务器请求成功 201表示服务器异常
msg 服务器返回的提示信息 可以为null
data 服务器返回的业务数据 返回user对象

~JSON格式如下:

{
   
 "status":200,
 "msg":"服务器调用成功!",
 "data":{
   
	 "created":"2021-02-18T11:17:23.000+00:00",
	 "updated":"2021-05-17T11:33:46.000+00:00",
	 "id":1,
	 "username":"admin",
	 "password":"a66abb5684c45962d887564f08346e8d",
	 "phone":"13111112222",
	 "email":"1235678@qq.com",
	 "status":true,
	 "role":null
	 }
 }

2.3 编辑UserController

需求: 根据ID查询User信息

    /**
     * 业务: 根据ID查询用户信息
     *
     * URL:  http://localhost:8091/user/2
     * 参数:  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值