三阶段--day11--数据自动填充(时间)/用户修改/用户删除/事务/商品分类页面/商品分类三级菜单嵌套

本文介绍了使用MybatisPlus自动填充创建时间和修改时间,详细讲解了用户修改、删除的步骤,涉及RESTful API设计。探讨了事务的概念,展示了如何在SpringBoot中添加事务注解并实现全局异常处理。最后,讨论了商品分类的实现,包括三级菜单的维护和商品列表的展现。
摘要由CSDN通过智能技术生成

项目执行顺序:main.js-->app.vue-->index.js-->login.vue-->home.vue-->user.vue...

一 数据的自动填充

1 业务需求说明

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

解决策略:MybatisPlus 实现自动填充的说明

2.MP-API说明

2.1 语法规则

原理:

  • 实现元对象处理器接口:com.baomidou.mybatisplus.core.handlers.MetaObjectHandler

  • 注解填充字段 @TableField(.. fill = FieldFill.INSERT) 生成器策略部分也可以配置!

2.2 添加注解

说明:新增操作时,需要自动填充 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;	//表示入库/更新时赋值.
}

2.3 编辑配置类

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

@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);
    }
}

二 用户的修改

1 用户修改第一步–数据回显

点击修改按钮,出现修改弹框,指定要修改的用户信息就会显示在弹框内

1.1 页面URL说明--user.vue

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

1.2 查询用户的业务接口

  • 请求路径: /user/{id}---restFul风格
  • 请求类型: GET
  • 返回值: SysResult对象
参数名称 参数说明 备注
status 状态信息 200表示服务器请求成功 201表示服务器异常
msg 服务器返回的提示信息 可以为null
data 服务器返回的业务数据 返回user对象
  • JSON格式如下:控制台r
{
 "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
	 }
 }

1.3 编辑UserController

需求: 根据ID查询User信息

 /*修改用户信息,第一步:根据用户id查询用户
    * url:user/{id}   典型的restFul风格
    * 参数:id
    * 返回值:SysResult对象*/
    @GetMapping("/{id}")
    public SysResult getUserById(@PathVariable Integer id){
        User user = userService.getUserById(id);
        return SysResult.success(user);
    }

1.4 编辑UserServiceImpl

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值