产品品牌CRUD

文章目录

    • 1.renren-generator生成CRUD
        • 1.数据库表设计
          • 1.数据表设计
          • 2.分析
        • 2.代码生成器生成crud
          • 1.查看generator.properties(不需要修改)
          • 2.修改application.yml 连接的数据库修改为云数据库
          • 3.启动renren-generator模块
          • 4.浏览器访问 http://localhost:81/
          • 5.选择commodity_brand表,点击生成代码,并将其解压
          • 6.将这个main目录覆盖该模块的main目录,一旦有提示是否要覆盖,取消,手动调整
        • 3.解决报错
          • 1.BrandController.java 的RequiresPermissions报错 全部注释掉即可
          • 2.检查生成的代码
            • 1.表字段
            • 2.BrandEntity.java的isshow字段有问题,应该是isShow(不用改)
            • 3.BrandDao.java
            • 4.BrandDao.xml 修改属性isShow(不用改)
            • 5.BrandService.java
            • 6.BrandServiceImpl.java
        • 4.postman测试CRUD
          • 1.启动项目
          • 2.测试 http://localhost:9091/commodity/brand/list
          • 3.测试 http://localhost:9091/commodity/brand/info/1
          • 4.测试 http://localhost:9091/commodity/brand/save
          • 5.测试 http://localhost:9091/commodity/brand/update
          • 6.测试 http://localhost:9091/commodity/brand/delete
    • 2.配置新页面,确保前后端连通
        • 1.创建子菜单
          • 1.启动renren-fast模块,登录系统
          • 2.创建子菜单 品牌管理
          • 3.刷新查看URL,此时应该是会访问到Vue的src/views/modules/commodity/brand.vue
          • 4.将代码生成器生成的 brand.vue 和 brand-add-or-update.vue 放到前端的 src/views/modules/commodity目录下
          • 5.前端点击品牌管理,此时应该在转圈
          • 6.修改brand.vue的发送请求部分
            • 1.找到这个地方
            • 2.使用环境变量+资源路径的方式修改请求
            • 3.查看页面请求到了,但是500错误
            • 4.查看后台是is_show字段的问题
            • 5.修改BrandEntity.java和BrandDao.xml的字段为isshow,然后重启
            • 6.查看菜单,成功访问
            • 7.原因
            • 8.将brand.vue的其他请求也修改成这样的格式,然后点击修改和删除测试
          • 7.取消ESLint检测
          • 8.打开权限检测,会出现添加和批量删除按钮
            • 1.修改src/utils/index.js 使其一直返回true
            • 2.出现新增和批量删除按钮
          • 9.重启后端项目,进行测试
            • 1.新增
            • 2.修改
            • 3.删除
            • 4.新增两个,批量删除
          • 10.完成简单分页查询
            • 1.查看 brand.vue 的请求数据
            • 2.找到后端的 com.sun.sunliving.commodity.service.impl.BrandServiceImpl.java
            • 3.修改查询条件
            • 4.测试
            • 5.恢复,以后有更好的解决方案
    • 3.项目部署
        • 1.后端区分多环境
          • 1.sunliving-commodity模块 数据库为云数据库,上下文路径也设置了
          • 2.renren-fast模块不用动
          • 3.整体打包
            • 1.clean
            • 2.package
            • 3.进入sunliving-commodity模块的target目录执行 java -jar sunliving-commodity-1.0-SNAPSHOT.jar
            • 4.设置application.yml的profiles为生产环境 prod
            • 5.重新打包然后执行java -jar 这次成功了
            • 6.ctrl + c 退出
        • 2.前端区分多环境(修改请求)
          • 1.自己的请求是以环境变量 +资源路径的形式,脚手架的请求也修改过
          • 2.项目根目录下执行 npm run build(默认是生产环境)
          • 3.查看生成的dist目录
        • 3.前后端部署
          • 1.将前端dist目录下的文件放到网站根目录
          • 2.访问查看
          • 3.将sunliving-commodity-1.0-SNAPSHOT.jar上传到网站并且替换原来的jar包
          • 4.再次访问项目
    • 4.启用Switch开关控件
        • 1.Switch控件部署
          • 1.找到Switch控件
          • 2.部署控件到项目中
            • 1.查看el-table文档的自定义列模板
            • 2.将选中的部分粘贴到显示的那个列
            • 3.确实可以显示自定义图标
            • 4.引入el-switch,但是只要修改一个按钮,其他的按钮都会跟着动
            • 5.跟当前行的isshow属性双向绑定即可
            • 6.完整的 switch 控件
            • 7.方法池编写changeIsShow
          • 3.测试
            • 1.全不显示
            • 2.数据库信息
        • 2.自定义删除和批量删除的提示信息
          • 1.删除时新增一个传递的参数name
          • 2.修改deleteHandle方法
          • 3.测试

1.renren-generator生成CRUD

1.数据库表设计
1.数据表设计
use sunliving_commodity;

CREATE TABLE `commodity_brand`
(
    id          BIGINT NOT NULL AUTO_INCREMENT COMMENT 'id',
    `name`      CHAR(50) COMMENT '品牌名',
    logo        VARCHAR(1200) COMMENT 'logo',
    description LONGTEXT COMMENT '说明',
    isShow      TINYINT COMMENT '显示',
    first_letter CHAR (1) COMMENT '检索首字母',
    sort        INT COMMENT '排序',
    PRIMARY KEY (id)
) CHARSET = utf8mb4 COMMENT ='家居品牌';

INSERT INTO
    `commodity_brand` (id,`name`, logo,description,isShow,first_letter,sort)
VALUES(1, '海信','','',1,'',NULL);

SELECT * FROM `commodity_brand`;
2.分析
  • sort字段由于其不确定性太强,所以就设置成空
  • 一个品牌可能会有多种产品,所以目前暂时不与商品表关联,以后使用更灵活的方式
2.代码生成器生成crud
1.查看generator.properties(不需要修改)

image-20240412191507762

2.修改application.yml 连接的数据库修改为云数据库
3.启动renren-generator模块

image-20240412191714735

4.浏览器访问 http://localhost:81/

image-20240412192023685

5.选择commodity_brand表,点击生成代码,并将其解压

image-20240412192713318

6.将这个main目录覆盖该模块的main目录,一旦有提示是否要覆盖,取消,手动调整

image-20240412192944700

image-20240412193015064

3.解决报错
1.BrandController.java 的RequiresPermissions报错 全部注释掉即可

image-20240412193215484

2.检查生成的代码
1.表字段

image-20240412194227961

2.BrandEntity.java的isshow字段有问题,应该是isShow(不用改)
  • MyBatis默认自动驼峰命名

image-20240412194359974

3.BrandDao.java
  • 依赖注入,继承BaseMapper,操作BrandEntity

image-20240412194555575

4.BrandDao.xml 修改属性isShow(不用改)
  • application.yml扫描

image-20240412195204760

5.BrandService.java
  • 继承IService接口对BrandEntity进行操作

image-20240412195305510

6.BrandServiceImpl.java
  • 实现BrandService接口,继承ServiceImpl,使用BrandDao对BrandEntity进行操作

image-20240412195457863

4.postman测试CRUD
1.启动项目

image-20240412195850034

2.测试 http://localhost:9091/commodity/brand/list

image-20240412200213836

3.测试 http://localhost:9091/commodity/brand/info/1

image-20240412200331205

4.测试 http://localhost:9091/commodity/brand/save

image-20240412200551168

image-20240412200615342

image-20240412200633017

5.测试 http://localhost:9091/commodity/brand/update

image-20240412201000304

image-20240412201021230

6.测试 http://localhost:9091/commodity/brand/delete

image-20240412201402382

image-20240412201415278

2.配置新页面,确保前后端连通

1.创建子菜单
1.启动renren-fast模块,登录系统

image-20240412203153769

2.创建子菜单 品牌管理

image-20240412203856714

image-20240412203825150

3.刷新查看URL,此时应该是会访问到Vue的src/views/modules/commodity/brand.vue

image-20240412203947253

4.将代码生成器生成的 brand.vue 和 brand-add-or-update.vue 放到前端的 src/views/modules/commodity目录下

image-20240412205837768

image-20240412205914106

5.前端点击品牌管理,此时应该在转圈

image-20240412205956832

6.修改brand.vue的发送请求部分
1.找到这个地方

image-20240412210210180

2.使用环境变量+资源路径的方式修改请求

image-20240412211436995

3.查看页面请求到了,但是500错误

image-20240412211548322

4.查看后台是is_show字段的问题

image-20240412211626211

5.修改BrandEntity.java和BrandDao.xml的字段为isshow,然后重启

image-20240412211710524

image-20240412211726785

6.查看菜单,成功访问

image-20240412211912695

7.原因
  • 表中的字段写的是isShow,然后MyBatisPlus默认开启了自动驼峰命名法
  • 我以为在实体类中应该也是isShow了,但是在实际操作数据库的时候会变成is_show
  • 在开启自动驼峰命名法的前提下如果数据库中的字段是驼峰isShow的话,那么在项目中就应该是isshow
8.将brand.vue的其他请求也修改成这样的格式,然后点击修改和删除测试

image-20240412212909427

image-20240412212935078

7.取消ESLint检测
8.打开权限检测,会出现添加和批量删除按钮
1.修改src/utils/index.js 使其一直返回true

image-20240413091950739

2.出现新增和批量删除按钮

image-20240413092023017

9.重启后端项目,进行测试
1.新增

image-20240413092323655

image-20240413092343639

2.修改

image-20240413092423699

image-20240413092433880

image-20240413092447434

3.删除

image-20240413092507119

4.新增两个,批量删除

image-20240413092554235

image-20240413092601031

image-20240413092612202

10.完成简单分页查询
1.查看 brand.vue 的请求数据

image-20240413094551578

2.找到后端的 com.sun.sunliving.commodity.service.impl.BrandServiceImpl.java

image-20240413094751580

3.修改查询条件

image-20240413095305546

4.测试

image-20240413095405748

5.恢复,以后有更好的解决方案

3.项目部署

1.后端区分多环境
1.sunliving-commodity模块 数据库为云数据库,上下文路径也设置了

image-20240412213419094

2.renren-fast模块不用动
3.整体打包
1.clean

image-20240412213551640

2.package

image-20240412213604270

image-20240412213629831

3.进入sunliving-commodity模块的target目录执行 java -jar sunliving-commodity-1.0-SNAPSHOT.jar
  • 端口9091,上下文路径为空,说明没有设置为生产环境!

image-20240412213847755

4.设置application.yml的profiles为生产环境 prod
5.重新打包然后执行java -jar 这次成功了

image-20240412214224582

6.ctrl + c 退出
2.前端区分多环境(修改请求)
1.自己的请求是以环境变量 +资源路径的形式,脚手架的请求也修改过
2.项目根目录下执行 npm run build(默认是生产环境)

image-20240412215348834

3.查看生成的dist目录

image-20240412215528521

3.前后端部署
1.将前端dist目录下的文件放到网站根目录

image-20240412220207310

2.访问查看

image-20240412221023576

3.将sunliving-commodity-1.0-SNAPSHOT.jar上传到网站并且替换原来的jar包
4.再次访问项目

image-20240412221619188

image-20240412221636322

image-20240412221642530

4.启用Switch开关控件

1.Switch控件部署
1.找到Switch控件

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

image-20240413100307462

2.部署控件到项目中
1.查看el-table文档的自定义列模板

image-20240413101156513

2.将选中的部分粘贴到显示的那个列

image-20240413101346786

3.确实可以显示自定义图标

image-20240413101416489

4.引入el-switch,但是只要修改一个按钮,其他的按钮都会跟着动

image-20240413101659178

image-20240413101703830

5.跟当前行的isshow属性双向绑定即可

image-20240413102221339

6.完整的 switch 控件
  • :active-value="1"表示激活状态为1
  • :inactive-value="0"表示非激活状态为0
  • 注意这里一定要加冒号,因为绑定的是num值
      <el-table-column
        prop="isshow"
        header-align="center"
        align="center"
        label="显示">
        <template slot-scope="scope">
          <el-switch
            v-model="scope.row.isshow"
            @change="changeIsShow(scope.row)"
            :active-value="1"
            :inactive-value="0"
            active-color="#13ce66"
            inactive-color="#ff4949">
          </el-switch>
        </template>
      </el-table-column>
7.方法池编写changeIsShow
      // 根据switch开关改变是否显示
      changeIsShow (row) {
        this.$http({
          // url: this.$http.adornUrl('/commodity/brand/update'),
          url: process.env.BASEPATH + '/commodity/brand/update',
          method: 'post',
          data: this.$http.adornData({
            id: row.id,
            isshow: row.isshow
          }, false)
        }).then(({data}) => {
          if (data && data.code === 0) {
            this.getDataList()
            this.$message({
              message: '操作成功',
              type: 'success',
              duration: 1500
            })
          } else {
            this.$message.error(data.msg)
          }
        })
      }
3.测试
1.全不显示

image-20240413112546694

2.数据库信息

image-20240413112607267

2.自定义删除和批量删除的提示信息
1.删除时新增一个传递的参数name

image-20240413114417476

2.修改deleteHandle方法

image-20240413114521176

3.测试

image-20240413114541464

image-20240413114549997

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

能聚合各站热点的DailyHot

什么是 DailyHot ? 今日热榜&#xff08;DailyHot&#xff09;是一个获取各大热门网站热门头条的聚合网站&#xff0c;能追踪全网热点、实现简单高效阅读。项目分为前、后端&#xff0c;其中后端提供了一个聚合热门数据的 API 接口。 &#x1f6a9; 后端 API 特性 极快响应&a…

vue3+ts(<script setup lang=“ts“>)刷新页面后保持下拉框选中效果

效果图&#xff1a; 代码&#xff1a; <template><div class"app-layout"><div class"app-box"><div class"header"><div class"header-left"></div><div class"title">室外智…

css实现围绕中心进行圆形旋转

效果如下 通过css animation属性能实现以上效果 先试用定位&#xff0c;将每一项设置一个初始位置 {cursor: pointer;left: 50%;width: 144px;height: 144px;display: flex;align-items: center;justify-content: center;margin-left: -72px;top: 228px;position: absolute;a…

Cesium 3DTileset Style 原理简析

Cesium 3DTileset Style 原理简析 应用层会看到这样的使用。那么原理是什么, 为啥写 height, 除了这个还有啥? const tileset await Cesium.Cesium3DTileset.fromUrl("../../public/tileset/building/tileset.json"); tileset.style new Cesium.Cesium3DTileSty…

【基本数据结构】链表

文章目录 前言链表简介头节点与尾节点特性 分类单向链表双向链表循环链表 单链表基本操作定义并初始化单链表读取节点插入节点删除节点修改节点 参考资料写在最后 前言 本系列专注更新基本数据结构&#xff0c;现有以下文章&#xff1a; 【算法与数据结构】数组. 【算法与数…

Python 操作数据库

十、Python3 操作数据库 1、Python3 操作 MySQL 1、基本介绍 Python3 操作 MySQL 数据库 可以使用的模块是 pymysql 和 MySQLdb。 这个两个模块都是通过自己的 API 执行原生的 SQL 语句实现的。 MySQLdb 是最早出现的一个操作 MySQL 数据库的模块&#xff0c;核心由C语言编…

LangChain-Chatchat 实践

1. 说明 比较了几个AI LLM的集成应用工具(比如Quivr, Dify, one-api), 还是LangChain-Chatchat更符合我的需要: 支持私有化部署不同的LLM知识库支持Api支持开源免费, 容易二开 相关路径: 条项路径LangChain-Chatchat 项目/data0/Projects/Langchain-ChatchatLLM 语言模型保…

【计算机毕业设计】ssm旅游景点管理系统设计

现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统 数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本旅游景点管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息&…

vaspkit 画 Charge-Density Difference

(echo 314;echo $(cat 1))|vaspkit 文件1提前写好使用的CHGCAR路径 SPIN_DW.vasp ../ML2scf/SPIN_DW.vasp ../ML1scf/SPIN_DW.vasp POSite and negative 默认为blue,and 青色 (RGB 30 245 245) 正值&#xff1a;blue 。负值&#xff1a;青色 RGB 30 245 245。 提示&…

LLM Agent智能体综述(万字长文)

前言 &#x1f3c6;&#x1f3c6;&#x1f3c6;在上一篇文章中&#xff0c;我们介绍了如何部署MetaGPT到本地&#xff0c;获取OpenAI API Key并配置其开发环境&#xff0c;并通过一个开发小组的多Agent案例感受了智能体的强大&#xff0c;在本文中&#xff0c;我们将对AI Agent…

C++设计模式|创建型 5.原型模式

1.什么是原型模式&#xff1f; 原型模式⼀种创建型设计模式&#xff0c;该模式的核⼼思想是基于现有的对象创建新的对象&#xff0c;⽽不是从头开始创建。 在原型模式中&#xff0c;通常有⼀个原型对象&#xff0c;它被⽤作创建新对象的模板。新对象通过复制原型对象的属性和状…

Mysql数据存储格式分析

一、整体存储逻辑 1.1 Mysql数据存放位置 不同的存储引擎&#xff0c;对Mysql数据的存储是不同的。新建一个test数据库&#xff0c;里面有t1,t2和test5三张表&#xff0c;以Innodb和Myisam存储引擎为例&#xff1a; Innodb存储引擎&#xff1a; .frm文件&#xff1a;与表相…

【Nginx】如何在 Nginx 中阻止来自特定国家的 IP 地址访问

文章目录 前言一、准备工作二、查看 Nginx 服务器都拥有哪些模块2.1 先查看本地nginx是否有ngx_http_geoip2模块2.2 安装nginx并配置ngx_http_geoip2模块2.2.1下载所需版本的nginx到服务器2.2.2 先安装所需依赖2.2.3 解压文件2.2.4 下载ngx_http_geoip2模块2.2.5 编译安装nginx…

解决webstorm没有vue语法提示;webstorm没有代码提示

解决webstorm没有vue语法提示&#xff1b;webstorm没有代码提示 使用webstorm 2023.x 开发vue项目。发现死活没有vue语法提示&#xff0c;即便是npm install、清理缓存。对比其他vue项目却有语法提示&#xff0c;最后发现依赖库被忽略了&#xff1a; 删除掉node_modules 的忽略…

国外IP代理免费试用技巧

随着互联网的普及&#xff0c;人们越来越依赖于网络来获取信息、进行交流和娱乐。国外IP代理就成了利器之一。在本文中&#xff0c;我们将探讨如何免费使用国外IP代理。 一、了解国外IP代理的原理 国外IP代理&#xff0c;简单来说&#xff0c;就是通过连接到位于国外的代理服务…

linux 环境下 分布式文件搭建fastDFS

1.软件信息 地址&#xff1a;happyfish100 (YuQing) GitHub 1.fastdfs-master.zip 2.fastdfs-nginx-module-master.zip 3.libfastcommon-master.zip 4.libserverframe-master.zip yum install make cmake gcc gcc-c perl 2.安装libfastcommon unzip libfastcommon-mast…

怎么转换音频?看这3款音频转换器

随着数字媒体的发展&#xff0c;音频文件在我们的日常生活中占据了越来越重要的地位。有时候在不同的应用场景里&#xff0c;无论是音乐、语音还是其他类型的音频内容&#xff0c;我们都需要对其进行转换以满足不同的需求。 本文将为您介绍3款常用的音频转换器&#xff0c;帮助…

代码随想录训练营Day31:动态规划3:0-1背包

1.0-1背包基础 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品只能用一次&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 1.1动态规划五部曲 确定dp数组以及下标的含义&#xff1a;dp[i][j] 表示…

sql操作、发送http请求和邮件发送 全栈开发之路——后端篇(2)

全栈开发一条龙——前端篇 第一篇&#xff1a;框架确定、ide设置与项目创建 第二篇&#xff1a;介绍项目文件意义、组件结构与导入以及setup的引入。 第三篇&#xff1a;setup语法&#xff0c;设置响应式数据。 第四篇&#xff1a;数据绑定、计算属性和watch监视 第五篇 : 组件…

RK3566(泰山派):3.1寸屏幕D310T9362V1SPEC触摸驱动(竖屏)

RK3566&#xff08;泰山派&#xff09;&#xff1a;3.1寸屏幕D310T9362V1SPEC触摸驱动&#xff08;竖屏&#xff09; 文章目录 RK3566&#xff08;泰山派&#xff09;&#xff1a;3.1寸屏幕D310T9362V1SPEC触摸驱动&#xff08;竖屏&#xff09;电路配置i2c1设备树创建驱动编写…