《尚品甄选》:后台系统——分类品牌和规格管理(debug一遍)

文章目录

  • 一、分类品牌管理
    • 1.1 表结构介绍
    • 1.2 列表查询
    • 1.3 添加功能
    • 1.4 修改功能
    • 1.5 删除功能
  • 二、商品规格管理
    • 2.1 表结构介绍
    • 2.2 列表查询
    • 2.3 添加功能
    • 2.4 修改功能
    • 2.5 删除功能

一、分类品牌管理

分类品牌管理就是将分类的数据和品牌的数据进行关联,分类数据和品牌数据之间的关系是多对多的关系,因此需要单独使用一张数据表来存储该数据。这一部分内容整体上较为简单。

1.1 表结构介绍

CREATE TABLE `category_brand` (`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',`brand_id` bigint DEFAULT NULL COMMENT '品牌ID',`category_id` bigint DEFAULT NULL COMMENT '分类ID',`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',`is_deleted` tinyint NOT NULL DEFAULT '0' COMMENT '删除标记(0:可用 1:不可用)',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='分类品牌'

1.2 列表查询

在这里插入图片描述
需求说明:
如果在搜索表单中选择了某一个品牌以及分类,那么此时就需要按照品牌id和分类id进行查询;并且搜索的时候需要进行分页搜索。


接口说明:

  • 品牌列表接口:当页面加载完毕以后需要请求后端接口查询出系统中所有的品牌数据,将品牌数据在搜索表单的品牌下拉框中进行展示。
  • 分类品牌条件分页查询接口。

先来debug品牌列表接口,先来到controller
在这里插入图片描述
来到业务层,调用mapper接口,查询数据库
在这里插入图片描述
SQL语句编写如下:

    @Select("select * from brand where is_deleted = 0 order by id desc")List<Brand> findAll();

再接着debug分类品牌条件分页查询接口,首先来看一下需求分析

  • 前端提交请求参数的时候包含了两部分的参数:搜索条件参数、分页参数。后端查询完毕以后需要给前端返回一个分页对象,分页对象中封装了分页相关的参数。前端进行参数传递的时候,不一定会传递搜索条件,因此sql语句的编写需要使用到动态sql

在这里插入图片描述

继续debug,来到controller层,获取前端传来的品牌id值
在这里插入图片描述
业务层进行分页,调用mapper接口,查询数据库,我这里查询到了两条数据。
在这里插入图片描述
SQL语句编写有些复杂,涉及到三表查询,如下所示:

<!--    List<CategoryBrand> findByPage(CategoryBrandDto categoryBrandDto);--><select id="findByPage" resultType="com.atguigu.spzx.model.entity.product.CategoryBrand">select cb.id,cb.brand_id,cb.category_id,cb.create_time,cb.update_time,c.name as categoryName,b.name as brandName,b.logofrom category_brand cbleft join category c on c.id = cb.category_idleft join brand b on b.id = cb.brand_id<where>cb.is_deleted = 0<if test="brandId != null and brandId != ''">and cb.brand_id = #{brandId}</if><if test="categoryId != null and categoryId != ''">and cb.category_id = #{categoryId}</if></where>order by cb.id desc</select>

1.3 添加功能

需求说明:
当用户点击添加按钮的时候,在对话框中需要展示添加分类品牌表单。当用户在该表单中点击提交按钮的时候那么此时就需要将表单进行提交,在后端需要将提交过来的表单数据保存到数据库中即可。如下所示:
在这里插入图片描述
代码很简单,业务层就是做新增数据操作,这里给出SQL语句:

    @Insert("insert into category_brand values(#{id}, #{brandId}, #{categoryId}, now(), now(), 0)")void save(CategoryBrand categoryBrand);

1.4 修改功能

需求说明:
当用户点击修改按钮的时候,在对话框中需要将当前行所对应的分类品牌数据在该表单页面进行展示。当用户在该表单中点击提交按钮的时候那么此时就需要将表单进行提交,在后端需要提交过来的表单数据修改数据库中的即可。效果如下所示:
在这里插入图片描述
debug到controller层,获取到前端传来的数据,可以看到,修改后的分类名是工艺礼品乐器,其分类id值是703。
在这里插入图片描述
业务层通过mapper接口修改数据库
在这里插入图片描述
修改数据库对应的SQL语句如下:

<!--    void updateById(CategoryBrand categoryBrand);--><update id="updateById">update category_brand set<if test="brandId != null and brandId != ''">brand_id = #{brandId},</if><if test="categoryId != null and categoryId != ''">category_id = #{categoryId},</if>update_time = now()whereid = #{id}</update>

1.5 删除功能

需求说明:
当点击删除按钮的时候此时需要弹出一个提示框,询问是否需要删除数据?如果用户点击是,那么此时向后端发送请求传递id参数,后端接收id参数进行逻辑删除。效果如下所示:
在这里插入图片描述
删除功能的代码也很简单,业务层就是主要执行修改字段is_deleted = 1的操作,这里给出SQL语句:

    @Update("update category_brand set is_deleted = 1, update_time = now() where id = #{id}")void deleteById(Long id);

二、商品规格管理

在电商项目中,商品规格指的是商品属性、型号、尺寸、颜色等具体描述商品特点和属性的标准化信息。

2.1 表结构介绍

CREATE TABLE `product_spec` (`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',`spec_name` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '规格名称',`spec_value` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci COMMENT '规格值:"[{"key":"颜色","valueList":["蓝","白","红"]]"',`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',`is_deleted` tinyint NOT NULL DEFAULT '0' COMMENT '删除标记(0:可用 1:不可用)',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='商品规格'

2.2 列表查询

需求说明:
当产品规格管理页面加载完毕后就向后端发送分页查询请求,后端进行分页查询,返回分页结果数据。
在这里插入图片描述
接着debug,来到controller层,获取前十条数据
在这里插入图片描述
业务层调用mapper接口,查询所有数据,并进行分页
在这里插入图片描述
SQL语句编写如下:

    @Select("select * from product_spec where is_deleted = 0 order by id desc")List<ProductSpec> findByPage();

2.3 添加功能

需求说明:
用户点击添加按钮,此时需要展示一个添加数据的表单对话框,用户填写表单数据,点击提交按钮,请求后端接口完成数据的保存操作。效果如下所示:
在这里插入图片描述
debug来到controller层,可以看到,实体类接收到了规格名称和规格
在这里插入图片描述
业务层调用mapper接口,将数据插入数据库
在这里插入图片描述
SQL语句编写如下,就是一个简单的新增操作:

    @Insert("insert into product_spec values (#{id}, #{specName}, #{specValue}, now(), now(), 0)")void save(ProductSpec productSpec);

2.4 修改功能

需求说明:
当用户点击修改按钮的时候,在对话框中需要将当前行所对应的产品规格数据在该表单页面进行展示。当用户在该表单中点击提交按钮的时候那么此时就需要将表单进行提交,在后端需要提交过来的表单数据修改数据库中的即可。效果如下所示:
在这里插入图片描述
SQL代码编写如下:

<update id="updateById" >update product_spec set<if test="specName != null and specName != ''">spec_name = #{specName},</if><if test="specValue != null and specValue != ''">spec_value = #{specValue},</if>update_time =  now()whereid = #{id}
</update>

2.5 删除功能

需求说明:
当点击删除按钮的时候此时需要弹出一个提示框,询问是否需要删除数据?如果用户点击是,那么此时向后端发送请求传递id参数,后端接收id参数进行逻辑删除。效果如下所示:
在这里插入图片描述
因为本质上也是一个修改语句,因此业务层只是SQL语句的不同,SQL编写如下:

    @Update("update product_spec set is_deleted = 1, update_time = now() where id = #{id}")void deleteById(Long id);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/231997.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode刷题】-- 78.子集

78.子集 class Solution {public List<List<Integer>> subsets(int[] nums) {List<List<Integer>> ans new ArrayList<>();List<Integer> list new ArrayList<>();dfs(0,nums,ans,list);return ans;}private void dfs(int cur,int…

泛微OA对接金蝶云星空方案分享(对接场景解析)

分享金蝶云星空跟泛微OA系统集成对接的方案分享&#xff0c;主讲审批流程对接&#xff0c;表单对接的两类场景。分别是金蝶云星空发起申请和泛微发起流程审批&#xff0c;最终实现统一管理。 数据集成主要有以下好处&#xff1a; &#xff08;1&#xff09;数据一致性&#xf…

4、RTC 实时时钟Demo(STM32F407)

RTC是个独立的BCD定时器/计数器。RTC 提供一个日历时钟&#xff0c;两个可编程闹钟中断&#xff0c;以及一个具有中断功能的周期性可编程唤醒标志。RTC还包含用于管理低功耗模式的自动唤醒单元。 (RTC实质&#xff1a;一个掉电(主电源)后还继续运行(由VBAT供电)的32位的向上计…

25. 深度学习进阶 - 权重初始化,梯度消失和梯度爆炸

文章目录 权重初始化梯度消失与梯度爆炸 Hi&#xff0c;你好。我是茶桁。 咱们这节课会讲到权重初始化、梯度消失和梯度爆炸。咱们先来看看权重初始化的内容。 权重初始化 机器学习在我们使用的过程中的初始值非常的重要。就比如最简单的wxb&#xff0c;现在要拟合成一个yha…

vue+el-tooltip 封装提示框组件,只有溢出才提示

效果 封装思路 通过控制el-tooltip的disabled属性控制是否提示通过在内容上绑定mouseenter事件监听内容宽度和可视宽度&#xff0c;判断内容是否溢出 封装代码 <template><div style"display: flex" class"column-overflow"><el-tooltip…

使用idea中的Live Templates自定义自动生成Spring所需的XML配置文件格式

文章目录 一、引言&问题描述二、解决方案 一、引言&问题描述 在使用Spring来管理对象时&#xff0c;我们需要创建Spring的配置文件applicationContext.xml&#xff0c;如下图位置&#xff1a; 在resources目录下选择new->File 或 使用idea自带模板new->XML Con…

WebSocket 接口测试:打通前端与后端的通信之路!

什么是 WebSocket? WebSocket 是一种基于在单个 TCP 连接上进行全双工通信的协议&#xff0c;解决了HTTP协议不适用于实时通信的缺点&#xff0c;相较于 HTTP 协议&#xff0c;WebSocket 协议实现了持久化网络通信&#xff0c;可以实现客户端和服务端的长连接&#xff0c;能够…

顶级大厂Quora如何优化数据库性能?

Quora 的流量涉及大量阅读而非写入&#xff0c;一直致力于优化读和数据量而非写。 0 数据库负载的主要部分 读取数据量写入 1 优化读取 1.1 不同类型的读需要不同优化 ① 复杂查询&#xff0c;如连接、聚合等 在查询计数已成为问题的情况下&#xff0c;它们在另一个表中构…

vr工业制造流程3D模拟仿真可视化展示

工业仿真3D数字化展示系统具有多方面的独特之处&#xff0c;主要体现在以下几个方面&#xff1a; 1、真实感和交互性&#xff1a;该系统可以将实际的工业设备、产品、场景等进行数字化建模&#xff0c;通过三维图形技术将其呈现在计算机屏幕上&#xff0c;使用户可以在虚拟环境…

人工智能在内容相关性Content Relevance方面的应用

许多公司在向客户和潜在客户提供内容服务时犯了一个错误&#xff0c;即定制性不足&#xff0c;内容过于通用&#xff0c;可能与每位目标客户都不相关。谈及内容相关性时&#xff0c;人们希望获得有用的信息和问题解决方法&#xff0c;或具有娱乐性和参与性的内容。 为客户提供…

外汇天眼:外汇市场中的“双向交易”是什么意思?

说到外汇市场&#xff0c;总免不了提到它双向交易的优势&#xff0c;很多新手会对这一点有所疑问&#xff0c;今天我们就帮大家解决这一个疑问。 何谓双向交易&#xff1f; 金融市场上&#xff0c;交易者最常接触到的股票&#xff0c;多属于单向交易。 单向交易的模式便是「先…

【C++笔记】红黑树的简易实现

【C笔记】红黑树的简易实现 一、什么是红黑树以及红黑树好在哪里1.1、什么是红黑树1.2、红黑树比AVL树好在哪里&#xff1f; 二、红黑树的模拟实现2.1、红黑树的插入2.2、仅变色调整2.3、变色单旋调整2.4、变色双旋调整 一、什么是红黑树以及红黑树好在哪里 1.1、什么是红黑树…