家居分类的添加、修改、逻辑删除和批量删除

文章目录

    • 1.逻辑删除家居分类
        • 1.将之前的docker数据库换成云数据库
        • 2.树形控件增加添加和删除按钮
          • 1.找到控件
          • 2.粘贴四个属性到<el-tree 属性>
          • 3.粘贴两个span到<el-tree>标签里
          • 4.代码
          • 5.效果
          • 6.方法区新增两个方法处理添加和删除分类
          • 7.输出查看一下信息
          • 8.要求节点等级小于等于2允许有Add,没有子节点允许Delete
        • 3.MyBatis-Plus逻辑删除
          • 1.官方文档
          • 2.具体介绍
          • 3.配置方式
            • 1.在application.yml的db-config下添加logic的三句话,逻辑已删除值为0,未删除值为1
            • 2.com/sun/sunliving/commodity/entity/CategoryEntity.java 给相应字段添加 @TableLogic 注解
            • 3.如果没有在application.yml中配置逻辑删除的值,还可以直接在@TableLogic 注解中指定
          • 4.postman测试逻辑删除
            • 1.发送请求 http://localhost:9091/commodity/category/delete
            • 2.查看表字段
            • 3.使用MyBatis-Plus再查询一下 ,发现确实不会再被查到了 http://localhost:9091/commodity/category/list
          • 5.点击超链接完成删除
            • 1.点击删除查看返回信息
            • 2.输出查看id
            • 3.代码实现
            • 4.删除两个灯具测试
            • 5.数据库信息
          • 6.删除前弹出提示框
            • 1.完整代码
            • 2.删除测试
          • 7.删除后弹出操作成功
            • 1.添加代码
            • 2.删除测试
          • 3.树形控件展开设置
            • 1.设置默认全部展开
            • 2.设置删除分类之后保持原来状态
    • 2.添加子分类信息到数据库
        • 1.前端添加对话框控件
          • 1.查找控件
            • 1.官网
            • 2.具体控件
          • 2.部署控件
            • 1.将选中的部分粘贴到 category.vue的el-tree标签后
            • 2.使用div将两个控件包起来否则会有编译错误
            • 3.前端测试访问
          • 3.基础代码
            • 1.对话框控件
            • 2.数据池 category 表示表单数据 dialogVisible 表示是否显示弹窗
            • 3.方法池 add 显示对话框 addCategory 点击确定后触发这个方法
            • 4.测试
          • 4.初始化对话框
            • 1.数据池声明对话框数据
            • 2.方法池设置在弹出对话框之前给对话框赋默认值
            • 3.测试
          • 5.发送请求,将数据保存到数据库
            • 1.打开注释,显示对话框
            • 2.编写 addCategory方法
            • 3.测试
          • 6.注意事项
            • 1.如果添加中文乱码,就在数据库的请求地址中加一段
            • 2.ESLint检测介绍
            • 3.注释掉 build/webpack.base.conf.js 中的一段代码然后重启
    • 3.修改分类信息
        • 1.回显分类信息
          • 1.新增编辑按钮
          • 2.方法池编写edit方法,点击编辑按钮就回显表单
          • 3.测试
        • 2.向后端发送请求,入库
          • 1.增加标志位,判断是修改还是删除
            • 1.数据池增加标志位
            • 2.编辑和修改分类时设置标志位
          • 2.修改addCategory方法,完成修改入库操作
          • 3.测试
    • 4.批量逻辑删除家居分类
        • 1.获取批量选择的id
          • 1.问AI
          • 2.el-tree 增加属性 ref="treeRef"
          • 3.添加批量删除按钮
          • 4.编写handleBatchDelete方法,获取所有选中的id
          • 5.浏览器测试
        • 2.批量从数据库删除
          • 1.修改 handleBatchDelete 方法
          • 2.测试
            • 1.点击批量删除
            • 2.删除成功
            • 3.数据库信息

1.逻辑删除家居分类

1.将之前的docker数据库换成云数据库
2.树形控件增加添加和删除按钮
1.找到控件

image-20240412093004937

2.粘贴四个属性到<el-tree 属性>

image-20240412093250256

3.粘贴两个span到标签里

image-20240412093701331

4.代码
<template><el-tree :data="data":props="defaultProps"show-checkboxnode-key="id":expand-on-click-node="false"><span class="custom-tree-node" slot-scope="{ node, data }"><span>{{ node.label }}</span><span><el-buttontype="text"size="mini"@click="() => add(node, data)">Add</el-button><el-buttontype="text"size="mini"@click="() => remove(node, data)">Delete</el-button></span></span></el-tree>
</template>
5.效果

image-20240412094500983

6.方法区新增两个方法处理添加和删除分类

image-20240412095736430

7.输出查看一下信息

image-20240412100327523

8.要求节点等级小于等于2允许有Add,没有子节点允许Delete

image-20240412101612954

image-20240412101622614

3.MyBatis-Plus逻辑删除
1.官方文档

https://baomidou.com/pages/6b03c5/#%E6%AD%A5%E9%AA%A4-1-%E9%85%8D%E7%BD%AEcom-baomidou-mybatisplus-core-config-globalconfig-dbconfig

2.具体介绍

image-20240412102203526

3.配置方式
1.在application.yml的db-config下添加logic的三句话,逻辑已删除值为0,未删除值为1
mybatis-plus:mapper-locations: classpath:/mapper/**/*.xml # 这个表示扫描mapper文件夹下的所有xml文件,即使是子文件夹下的也会扫描global-config:db-config:logic-delete-field: flag # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)logic-delete-value: 0 # 逻辑已删除值(默认为 1)logic-not-delete-value: 1 # 逻辑未删除值(默认为 0)id-type: auto # 主键策略自增,就是不给主键赋值也会自动增长,配置entity的注解@TableId使用configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 控制台打印sql语句,生产环境中可以去掉
2.com/sun/sunliving/commodity/entity/CategoryEntity.java 给相应字段添加 @TableLogic 注解

image-20240412102814677

3.如果没有在application.yml中配置逻辑删除的值,还可以直接在@TableLogic 注解中指定

image-20240412103100587

4.postman测试逻辑删除
1.发送请求 http://localhost:9091/commodity/category/delete

image-20240412104158021

2.查看表字段

image-20240412104227811

3.使用MyBatis-Plus再查询一下 ,发现确实不会再被查到了 http://localhost:9091/commodity/category/list

image-20240412104353138

5.点击超链接完成删除
1.点击删除查看返回信息

image-20240412110035433

2.输出查看id

image-20240412110123472

image-20240412110137607

3.代码实现
    // 删除分类remove(node, data){// 获取要删除的idvar ids = [data.id]// 发送请求this.$http({url: process.env.BASEPATH + '/commodity/category/delete',method: 'post',data: this.$http.adornData(ids, false)}).then(({data}) => { // 解构了datathis.getCategories() // 重新获取分类列表})}
4.删除两个灯具测试

image-20240412110902709

5.数据库信息

image-20240412110959377

6.删除前弹出提示框
1.完整代码
    // 删除分类remove(node, data){// 获取要删除的idvar ids = [data.id]// 弹出确认框this.$confirm(`确定对【${data.name}】进行删除操作?`, '提示', {confirmButtonText: '确定',cancelButtonText: '取消',type: 'warning'}).then( () => {// 发送请求this.$http({url: process.env.BASEPATH + '/commodity/category/delete',method: 'post',data: this.$http.adornData(ids, false)}).then(({data}) => { // 解构了datathis.getCategories() // 重新获取分类列表})}).catch(() => {})}
2.删除测试

image-20240412113549741

image-20240412113557180

image-20240412113612812

image-20240412113618482

7.删除后弹出操作成功
1.添加代码
        // 添加成功提示this.$message({message: '操作成功',type: 'success'})

image-20240412113952220

2.删除测试

image-20240412113904714

3.树形控件展开设置
1.设置默认全部展开

image-20240412114210909

image-20240412114218818

2.设置删除分类之后保持原来状态
  • 设置属性

image-20240412115454629

  • 设置数据池

image-20240412115509873

  • 在获取分类列表之后展开父节点

image-20240412115536613

image-20240412115436704

2.添加子分类信息到数据库

1.前端添加对话框控件
1.查找控件
1.官网

https://element.eleme.cn/#/zh-CN/component/dialog

2.具体控件

image-20240412133244122

2.部署控件
1.将选中的部分粘贴到 category.vue的el-tree标签后

image-20240412133541842

image-20240412133707242

2.使用div将两个控件包起来否则会有编译错误

image-20240412134211184

3.前端测试访问

image-20240412134250818

3.基础代码
1.对话框控件
<!--    dialogVisible 表示是否显示对话框--><el-dialog title="收货地址" :visible.sync="dialogVisible">
<!--   categorydao 是表单的数据  --><el-form :model="category"><el-form-item label="分类名"><el-input v-model="category.name" autocomplete="off"></el-input></el-form-item></el-form><div slot="footer" class="dialog-footer"><el-button @click="dialogVisible = false">取 消</el-button><el-button type="primary" @click="addCategory">确 定</el-button></div></el-dialog>
2.数据池 category 表示表单数据 dialogVisible 表示是否显示弹窗

image-20240412135819766

3.方法池 add 显示对话框 addCategory 点击确定后触发这个方法
    // 添加分类信息到数据库,点击确定按钮时触发addCategory() {alert("addCategory")this.dialogVisible = false},// 添加分类add(data) {console.log("data", data) // data是当前节点的数据this.dialogVisible = true // 显示添加对话框}
4.测试

image-20240412140018043

image-20240412140028210

4.初始化对话框
1.数据池声明对话框数据
      category : { // 表单数据id: null,name: '',parentId: 0,catLevel: 0,isShow: 1,sort: 0,icon: '',proUnit: '',proCount: 0}
2.方法池设置在弹出对话框之前给对话框赋默认值
    // 添加分类add(data) {console.log("data", data) // data是当前节点的数据// 设置对话框初始数据this.category = {id: null,name: '',parentId: data.id, // 父层级idcatLevel: data.catLevel + 1, // 父层级的级别 + 1isShow: 1,sort: 0,icon: '',proUnit: '',proCount: 0}// this.dialogVisible = true // 显示添加对话框// 输出查看console.log("this.category", this.category)}
3.测试

image-20240412141928964

5.发送请求,将数据保存到数据库
1.打开注释,显示对话框

image-20240412144746713

2.编写 addCategory方法
    // 添加分类信息到数据库,点击确定按钮时触发addCategory() {// 获取表单数据var category = this.category// 发送请求this.$http({url: process.env.BASEPATH + '/commodity/category/save',method: 'post',data: this.$http.adornData(category, false)}).then(({data}) => { // 解构了data// 添加成功提示this.$message({message: '添加成功',type: 'success'})// 关闭对话框this.dialogVisible = false// 刷新分类列表this.getCategories() // 重新获取分类列表// 设置需要展开的菜单this.expandedkeys = [this.category.parentId]})}
3.测试

image-20240412144926500

image-20240412144937201

6.注意事项
1.如果添加中文乱码,就在数据库的请求地址中加一段

image-20240412145154168

2.ESLint检测介绍

image-20240412145622192

image-20240412145659195

3.注释掉 build/webpack.base.conf.js 中的一段代码然后重启

image-20240412145919734

image-20240412150053809

3.修改分类信息

1.回显分类信息
1.新增编辑按钮

image-20240412161524705

2.方法池编写edit方法,点击编辑按钮就回显表单
    // 编辑分类edit(data) {// 将当前节点的数据赋值给表单this.category = data// 显示对话框this.dialogVisible = true}
3.测试

image-20240412161710760

2.向后端发送请求,入库
1.增加标志位,判断是修改还是删除
1.数据池增加标志位

image-20240412165112271

2.编辑和修改分类时设置标志位

image-20240412165144650

image-20240412165153876

2.修改addCategory方法,完成修改入库操作
      if (this.dialogType == '修改') {// 发送请求入库this.$http({url: process.env.BASEPATH + '/commodity/category/update',method: 'post',data: this.$http.adornData(category, false)}).then(({data}) => { // 解构了data// 添加成功提示this.$message({message: '修改成功',type: 'success'})// 关闭对话框this.dialogVisible = false// 刷新分类列表this.getCategories() // 重新获取分类列表// 设置需要展开的菜单this.expandedkeys = [this.category.parentId]})}

image-20240412165358713

3.测试

image-20240412165423628

image-20240412165439269

4.批量逻辑删除家居分类

1.获取批量选择的id
1.问AI

image-20240412174927340

2.el-tree 增加属性 ref=“treeRef”

image-20240412175032592

3.添加批量删除按钮
    <!-- 批量删除按钮 --><el-buttontype="danger"size="mini"icon="el-icon-delete"@click="handleBatchDelete">批量删除</el-button>

image-20240412175051838

4.编写handleBatchDelete方法,获取所有选中的id
    // 处理批量删除操作handleBatchDelete() {// 获取idconst selectedIds = this.$refs.treeRef.getCheckedKeys();console.log('Selected node IDs:', selectedIds);}
5.浏览器测试

image-20240412175455434

image-20240412175503500

2.批量从数据库删除
1.修改 handleBatchDelete 方法
    // 处理批量删除操作handleBatchDelete() {// 获取idconst selectedIds = this.$refs.treeRef.getCheckedKeys();// 发送请求,批量删除this.$http({url: process.env.BASEPATH + '/commodity/category/delete',method: 'post',data: selectedIds}).then(({data}) => { // 解构了data// 添加成功提示this.$message({message: '批量删除成功',type: 'success'})// 刷新分类列表this.getCategories() // 重新获取分类列表})}
2.测试
1.点击批量删除

image-20240412180643341

2.删除成功

image-20240412180721828

3.数据库信息

image-20240412180756660

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

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

相关文章

李开复引领的零一万物开源了Yi-1.5模型,推出了6B、9B、34B三个不同规模的版本

零一万物&#xff0c;由李开复博士引领的AI 2.0公司&#xff0c;近期开源了其备受瞩目的Yi-1.5模型&#xff0c;这一举措再次彰显了公司在人工智能领域的创新实力与开放精神。Yi-1.5模型作为零一万物的重要技术成果&#xff0c;不仅代表了公司在大模型技术研发上的新高度&#…

冥想的时候怎么专注自己

冥想的时候怎么专注自己&#xff1f;我国传统的打坐养生功法&#xff0c;实际最早可追溯到五千年前的黄帝时代。   每天投资两个半小时的打坐&#xff0c;有上千年之久的功效。因为当你们打坐进入永恒时&#xff0c;时间停止了。这不只是两个半小时&#xff0c;而是百千万亿年…

为什么3d重制变换模型会变形?---模大狮模型网

3D建模和渲染过程中&#xff0c;设计师经常会遇到一个让人头疼的问题&#xff0c;那就是模型在进行重制变换后出现的意外变形。这种变形不仅影响了模型的外观和质量&#xff0c;也给设计工作带来了额外的麻烦。本文将深入探讨3D模型进行重制变换后出现变形的原因&#xff0c;帮…

回炉重造java----JVM

为什么要使用JVM ①一次编写&#xff0c;到处运行&#xff0c;jvm屏蔽字节码与底层的操作差异 ②自动内存管理&#xff0c;垃圾回收功能 ③数组下边越界检查 ④多态 JDK&#xff0c;JRE&#xff0c;JVM的关系 JVM组成部分 JVM的内存结构 《一》程序计数器(PC Register) 作用…

傻瓜化备份/恢复K8S集群Etcd数据

前言&#xff1a; 备份重要数据&#xff0c;简化重复操作&#xff0c;让一指禅、点点点也能完成运维任务。 脚本呈现界面如下&#xff1a; 1、查看Etcd版本 rootmaster:~# cat /etc/kubernetes/manifests/etcd.yaml | grep image: | awk {print $2} registry.aliyuncs.com/goo…

SpringCloud------Eureka,Ribbon,Nacos

认识微服务 微服务技术栈 微服务概念 微服务结构 微服务技术对比 企业需求 SpringCloud 认识Springcloud 服务拆分及远程调用 每个服务只能查询自己数据库中的表&#xff0c;导致其他服务如果想使用别人的表数据&#xff0c;这就需要进行远程调用&#xff0c;这里使用RestTem…

杨校老师项目之基于51单片机的汽车智能照明系统【嵌入式】

获取全套资料&#xff1a; 有偿获取&#xff1a;mryang511688 技术&#xff1a;C语言、单片机等 摘要&#xff1a; 科技的发展&#xff0c;人们对汽车的安全性也提出了更高要求。照明系统作为汽车组成部分之一&#xff0c;承担着重要职能&#xff0c;传统汽车智能照明系统已无法…

【云计算小知识】云管理的作用是什么?

云计算已经成为推动企业数字化转型&#xff0c;提升运营效率的重要力量。而在这个过程中&#xff0c;云管理作为确保云计算环境稳定、高效运行的关键环节&#xff0c;其作用愈发凸显。今天我们小编就给大家详细介绍一下云管理的作用是什么&#xff1f; 云管理的作用是什么&…

小程序的小组件

进度的组件 文字换行过滤 以及 排序 简单易懂 只为了记录工作 <template><div><ProgressBar :progress"progress" /><button click"increaseProgress">增加进度</button><view class"goods-name">12…

【408精华知识】提高外部排序速度的三种方式

文章目录 一、败者树二、置换-选择排序三、最佳归并树 一、败者树 还没写完… 二、置换-选择排序 三、最佳归并树 写在后面 这个专栏主要是我在学习408真题的过程中总结的一些笔记&#xff0c;因为我学的也很一般&#xff0c;如果有错误和不足之处&#xff0c;还望大家在评…

Wikimedia To Opensearch

概览 Wikimedia ⇒ Kafka ⇒ OpensearchJava Library&#xff1a;OKhttp3和OkHttp EventSource&#xff1b;生产者&#xff1a;Wikimedia&#xff1a;WikimediaChangeHandler和WikimediaChangeProducer&#xff1b;消费者&#xff1a;Opensearch&#xff1a;OpenSearchConsume…

AI智能体|我把Kimi接入了个人微信

大家好&#xff0c;我是无界生长。 最近加入AI学习交流群的小伙伴越来越多&#xff0c;我打算在微信群接入一个聊天机器人&#xff0c;让它协助管理微信群&#xff0c;同时也帮忙给群友解答一些问题。普通的群聊机器人肯定是不能满足需求的&#xff0c;得上AI大模型&#xff0c…

【JVM类加载机制】深度剖析JVM类加载机制

深度剖析JVM类加载机制 前言类加载运行全过程loadClass的类加载过程 类加载器和双亲委派机制类加载器的类型类加载器的初始化过程双亲委派机制为什么要设置双亲委派机制&#xff1f;全盘负责委托机制自定义类加载器实例打破双亲委派机制Tomcat打破双亲委派机制Tomcat自定义加载…

问题解决记录 | kettle中出现中文乱码

spoon.bat的启动文件中进行修改 if "%PENTAHO_DI_JAVA_OPTIONS%""" set PENTAHO_DI_JAVA_OPTIONS"-Xms1024m" "-Xmx2048m" "-Dfile.encodingUTF-8"

spark结课之小小tip

scala常用方法总结&#xff1a; 1.map()方法&#xff1a;用于对集合中的每个元素应用一个函数&#xff0c;并将结果收集到一个新的集合中。 基本结构&#xff1a; def map[B](f: (A) > B): List[B] 实例&#xff1a; val numbers List(1, 2, 3, 4, 5) val doubledNumber…

废品回收小程序,推动回收行业数字化发展

在垃圾分类、资源回收利用的时代背景下&#xff0c;废品回收行业迅速成长&#xff0c;市场规模逐渐扩大&#xff01; 随着“互联网”应用的普及&#xff0c;废品回收行业也进入到了数字化回收领域&#xff0c;各大回收行业开始专注于发展智能回收。此外&#xff0c;线上废品回…

‘vue-cli-service‘ is not recognized as an internal or external command解决方案

vue-cli-service is not recognized as an internal or external command, operable program or batch file.解决方案 先进行 &#xff1a; npm install -g vue/cli 命令安装vue cli 是必须的。 如果 npm run build 还是报错 遇到同样的提示&#xff1a; 这时候先安装依赖 np…

智慧管家物业管理系统(小组项目)

目录 前言 一、项目介绍 1、目的和背景 2、项目主要内容 3、技术介绍 二、功能模块 1、重要文件结构 2、功能实现&#xff08;部分个人负责模块功能&#xff09; 2.1 展示房源信息页面 2.2 房屋详情页面 2.3 房源信息管理 三、功能模块页面 1、前台模块 2、后台…

【讲解下iCloud如何高效利用】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

【C语言/数据结构】栈:从概念到两种存储结构的实现

目录 一、栈的概念 二、栈的两种实现方式 1.顺序表实现栈 2.链表实现栈 三、栈的顺序存储结构及其实现 1.栈的声明 2.栈的初始化 3.栈的销毁 4.栈的压栈 5.栈的弹栈 6.栈的判空 7.返回栈顶元素 8.返回栈的长度 四、栈的链式存储结构及其实现 1.栈的声明 2.栈的…