产品品牌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(不需要修改)

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(不用改)
- MyBatis默认自动驼峰命名

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

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

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

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

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.原因
- 表中的字段写的是isShow,然后MyBatisPlus默认开启了自动驼峰命名法
- 我以为在实体类中应该也是isShow了,但是在实际操作数据库的时候会变成is_show
- 在开启自动驼峰命名法的前提下如果数据库中的字段是驼峰isShow的话,那么在项目中就应该是isshow
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
- 端口9091,上下文路径为空,说明没有设置为生产环境!

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控件
https://element.eleme.cn/#/zh-CN/component/switch

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

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

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

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


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

6.完整的 switch 控件
- :active-value="1"表示激活状态为1
- :inactive-value="0"表示非激活状态为0
- 注意这里一定要加冒号,因为绑定的是num值
<el-table-columnprop="isshow"header-align="center"align="center"label="显示"><template slot-scope="scope"><el-switchv-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.全不显示

2.数据库信息

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

2.修改deleteHandle方法

3.测试


相关文章:
产品品牌CRUD
文章目录 1.renren-generator生成CRUD1.数据库表设计1.数据表设计2.分析 2.代码生成器生成crud1.查看generator.properties(不需要修改)2.修改application.yml 连接的数据库修改为云数据库3.启动renren-generator模块4.浏览器访问 http://localhost:81/5…...
惠普发布全新AI战略,重塑办公空间 引领企业智能化新浪潮
近日、全球知名科技公司惠普在北京隆重举办了以“用智能,开启无限可能”为主题的2024惠普商用AI战略暨AI PC新品发布会,此次盛会标志着惠普在人工智能领域迈出了重要一步,惠普紧跟时代步伐,推出了更高效、更安全、更灵活的AI PC产…...
python中的数据可视化:极坐标散点图
【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 python中的数据可视化: 极坐标散点图 [太阳]选择题 关于以下代码输出结果的说法中正确的是? import matplotlib.pyplot as plt import numpy as np n 150 r 2 * np.r…...
5.12.1 Detecting and classifying lesions in mammograms with Deep Learning
计算机辅助检测 (CAD) 系统的开发是为了帮助放射科医生分析筛查性乳房 X 光检查,深度 CNN 有可能彻底改变医学图像分析。我们提出了一种基于最成功的对象检测框架之一 Faster R-CNN 的 CAD 系统。该系统无需任何人为干预即可检测乳房 X 光照片上的恶性或良性病变并对…...
Python爬虫——如何使用urllib的HTTP基本库
怎样通过 urllib库 发送 HTTP 请求? urllib库主要由四个模块组成: urllib.request 打开和读取 URLurllib.error 包含 urllib.request 抛出的异常urllib.parse 用于解析 URLurllib.robotparser 用于解析 robots.txt 文件 1. 使用urllib.parse解析URL 使用urlparse(…...
OceanBase v4.3特性解析:新功能“租户克隆”的场景与应用指南
熟悉或曾用过OceanBase的朋友,对于“多租户”这一理念定不陌生。OceanBase的租户概念,与我们熟知的传统数据库实例颇为相似。举例来说,OceanBase的租户支持MySQL兼容模式,对于用户而言,选用一个MySQL兼容模式的租户&am…...
RS3236-3.3YUTDN4功能和参数介绍及PDF资料
RS3236-3.3YUTDN4功能和参数介绍及PDF资料-公司新闻-配芯易-深圳市亚泰盈科电子有限公司 品牌: RUNIC(润石) 封装: XDFN-4-EP(1x1) 描述: 带过温保护 输出类型: 固定 最大输入电压: 7.5V 输出电压: 3.3V 最大输出电流: 500mA RS3236-3.3YUTDN4 是一款低压差线性稳压器&#x…...
Vue如何引入公用方法
文章目录 1. 在全局范围内引入2. 在单文件组件中引入3. 使用Vuex或Vue Composition API4. 使用mixins5. 使用插件 1. 在全局范围内引入 在你的main.js或main.ts文件中引入并注册你的公用方法,使得它们可以在整个Vue应用中使用。 // 引入你的公用方法文件 import {…...
Java面试题:ConcurrentHashMap
ConcurrentHashMap 一种线程安全的高效Map集合 jdk1.7之前 底层采用分段的数组链表实现 一个不可扩容的数组:segment[] 数组中的每个元素都对应一个HashEntry数组用以存放数据 当放入数据时,根据key的哈希值找到对应的segment数组下标 找到下标后就会添加一个reentrantlo…...
现在闪侠惠递寄快递有福利了,千万不要因没把握住而后悔呀!
闪侠惠递平台寄快递现在真的是太便宜了,优惠价格把握不住,后悔都来不及!大家可以在闪侠惠递上面寄快递,价格真的非常优惠呢,比咱们平常寄快递的价格都优惠呢,真的,小编都亲自替大家尝试过了呢。…...
vue+ant-design+formBuiler表单构建器——技能提升——form design——亲测有效
最近看到后端同事在弄一个后台管理系统,额,前端真的是夹缝中生存啊,AI抢饭碗,后端也想干前端的活儿。。。 他用到了表单构建器,具体效果如下: 网上有很多适用于ElementUi和ant-design的form design插件,下…...
Git 如何管理标签命令(tag)
1.查看本地仓库tag --1.查看本地仓库tag UserDESKTOP-2NRT2ST MINGW64 /e/GITROOT/STARiBOSS/STARiBOSS-5GCA (gw_frontend_master) $ git tag 1stBossUpgrade V10.0.1_20220224_test V10.0.1_20220301_test tag-gwfrontend-V1.0.12-230625 tag-gw_frontend-23.08.29 tag-gw_f…...
零样本身份保持:ID-Animator引领个性化视频生成技术新前沿
在最新的研究进展中,由Xuanhua He及其团队提出的ID-Animator技术,为个性化视频生成领域带来了突破性的创新。这项技术的核心在于其零样本(zero-shot)人物视频生成方法,它允许研究者和开发者根据单一的参考面部图像生成…...
在Go语言中,可以这样使用Json
在Go语言中,处理JSON数据通常涉及编码(将Go结构体转换为JSON字符串)和解码(将JSON字符串转换为Go结构体)。Go标准库中的encoding/json包提供了这些功能。第三方插件可以使用"github.com/goccy/go-json"也有同…...
React useEffect Hook: 理解和解决组件双重渲染问题
在React中,useEffect可能会在组件的每次渲染后运行,这取决于它的依赖项。如果你发现useEffect运行了两次,并且你正在使用React 18或更高版本的严格模式(Strict Mode),这可能是因为在开发模式下,…...
【C语言】—— 动态内存管理
【C语言】——动态内存管理 一、动态内存管理概述1.1、动态内存的概念1.2、动态内存的必要性 二、 m a l l o c malloc malloc 函数2.1、函数介绍2.2、应用举例 三、 c a l l o c calloc calloc 函数四、 f r e e free free 函数4.1、函数介绍4.2、应用举例 五、 r e a l l o …...
Oracle到PostgreSQL的不停机数据库迁移
1970 年,数据库之父 Edgar Frank Codd 发表了“数据的关系模型”论文,该论文为往后的关系型数据库的发展奠定了基础。1979 年,基于关系模型理论的数据库产品 Oracle 2 首次亮相,并在过去的三四十年时间里,横扫全球数据…...
OpenAI 发布新款大型语言模型 GPT-4o,带大家了解最新ChatGPT动态。
OpenAI 发布新款大型语言模型 GPT-4o 昨日OpenAI 举办了一场线上活动,正式发布了其最新研发的 AI 模型 GPT-4o,并详细介绍了该模型的强大功能和未来发展规划。此次发布标志着 AI 技术的重大突破,为用户提供了更加便捷、高效的 AI 工具&#…...
网络编程套接字(一) 【简单的Udp网络程序】
网络编程套接字<一> 理解源端口号和目的端口号PORT VS PID认识TCP协议和UDP协议网络字节序socket编程接口sockaddr结构简单的UDP网络程序服务端创建套接字服务端绑定运行服务器客户端创建套接字关于客户端的绑定问题启动客户端启动客户端本地测试INADDR_ANY 理解源端口号…...
【CANoe】CAPL中生成报告常用的测试函数
文章目录 一、常用函数1、测试标题、描述、Comment2、测试步骤3、延时4、报告中插入图片5、报告中插入窗口截图二、实例源码三、报告效果一、常用函数 1、测试标题、描述、Comment testCaseTitle("TC 3.1", "Test Case 3.1"); testCaseDescription...
Qwen3-4B多语言能力体验:生成英文、日文内容的实际效果
Qwen3-4B多语言能力体验:生成英文、日文内容的实际效果 1. 引言 当我们需要一个能理解并生成多种语言的AI助手时,往往面临一个选择:是使用多个单一语言模型,还是寻找一个真正的多语言通才?前者切换麻烦,后者…...
Python实战:基于余弦相似度的中文短文本相似性计算
1. 为什么需要中文短文本相似性计算? 在日常工作和生活中,我们经常会遇到需要比较两段中文文本相似度的场景。比如在客服系统中自动匹配相似问题,在内容平台上检测重复文章,或者在搜索引擎中推荐相关文档。这些场景都离不开文本相…...
注释标准模板
观看main函数能够看出框架,框架要简单,比如训练不给它细分,数据流向关注转为哪个数据,而不是关注维度,维度在调试的时候才关注 1、>表示数据流向 2、# #包围的表示框架 3、# 表示普通的框架内的注释 4、# -----补充…...
3分钟掌握抖音智能批量下载:全流程自动化解决方案
3分钟掌握抖音智能批量下载:全流程自动化解决方案 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. …...
专业级GTA5辅助工具:YimMenu全维度安全防护与功能增强指南
专业级GTA5辅助工具:YimMenu全维度安全防护与功能增强指南 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/…...
小白也能玩转Qwen3-TTS:一键部署多语言语音生成,实测效果惊艳
小白也能玩转Qwen3-TTS:一键部署多语言语音生成,实测效果惊艳 1. 为什么选择Qwen3-TTS 作为一个语音生成领域的从业者,我测试过市面上大多数TTS(文本转语音)模型,Qwen3-TTS-12Hz-1.7B-VoiceDesign给我留下…...
别再傻傻分不清了!用大白话和Python代码讲透PID控制与阻抗控制的区别(附机器人动力学关联)
从开车到推门:用Python代码拆解PID与阻抗控制的本质差异 想象一下你正在驾驶一辆汽车。当你发现车速低于预期时,会本能地加深油门;而当车速过快时,又会自然松开踏板——这种基于误差不断调整的行为,正是PID控制的朴素体…...
csp信奥赛c++之字符数组与字符串的区别
csp信奥赛c之字符数组与字符串的区别 一、字符数组与字符串的区别(详细讲解) 在C(尤其信奥赛CSP常用环境)中,“字符数组”和“字符串”通常指两种不同的数据类型或存储方式: 特性字符数组 (char[])字符串…...
NotaGen古典音乐生成:5分钟快速上手,小白也能创作贝多芬风格钢琴曲
NotaGen古典音乐生成:5分钟快速上手,小白也能创作贝多芬风格钢琴曲 1. 前言:AI音乐创作新时代 想象一下,你坐在电脑前,轻点几下鼠标,就能生成一段贝多芬风格的钢琴曲。这不是科幻电影,而是Not…...
效率翻倍!LiuJuan Z-Image多图批量生成攻略,一次产出N张创意作品
效率翻倍!LiuJuan Z-Image多图批量生成攻略,一次产出N张创意作品 在AI图片生成领域,最令人头疼的莫过于反复调整参数、等待单张图片生成的低效流程。今天,我将分享如何利用LiuJuan Z-Image Generator的批量生成功能,一…...
