第4天-搭建项目(快速搭建电商平台后台管理系统及逆向生成微服务基本功能)
1.快速搭建电商平台后台管理系统
目前在Gitee开源软件中,人人开源 和 若依 关注度比较高,优品电商平台后台系统采用人人开源的框架
来快速构建,完成基本的CRUD,开发更加关注复杂业务、高并发、高可用以及分布式架构层面。
- 若依:https://gitee.com/y_project (官网:http://www.ruoyi.vip)
- 人人开源:https://gitee.com/renrenio (官网:https://www.renren.io)
1.1.人人开源快速构建
人人开源说明:
- renren-fast:用于快速构建电商后台管理系统(后端)
- renren-fast-vue:用于快速构建电商后台管理系统(前端)
- renren-generator:用于快速构建微服务基础CRUD代码
1.2.克隆人人开源框架
git clone https://gitee.com/renrenio/renren-fast.git
git clone https://gitee.com/renrenio/renren-fast-vue.git
1.3.搭建电商后台系统
1.3.1.Java后台
1.将克隆好的renren-fast工程改名gmall-admin拷贝到gmall工程中,并添加到Modules
- 改名: gmall-admin
- 注意:将 .git 文件夹删除
- 将 gmall-admin 聚合到 gmall 工程的 modules 中
<modules><module>gmall-admin</module>
</modules>
- 创建数据库 gmall_admin ,执行 gmall_admin 工程里的 MySQL 数据库脚本 mysql.sql
- 修改 gmall_admin 工程中 application-dev.yml 配置文件中 MySQL 的连接配置
spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedruid:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://192.168.56.10:3306/gmall_admin?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghaiusername: rootpassword: root
- 修改 gmall_admin 工程 application.yml 中 context-path
servlet:context-path: /gmall_admin
- 启动 gmall_admin 后台服务
1.3.2.前端工程
前端工程搭建文档:https://gitee.com/renrenio/renren-fast-vue/wikis/Home
- 安装 Node.js ,并配置 npm 使用淘宝镜像
npm config set registry http://registry.npm.taobao.org
npm install -g cnpm --registry=https://registry.npm.taobao.org
VSCode中打开 renren-fast-vue 前端工程(更名: gmall-admin-vue )
修改前端访问的入口文件 index.js
进入VSCode终端,安装并运行前端项目
#安装项目所需的依赖到 node_modules 文件中
npm install
#运行项目
npm dev run#Error: nodeб sass@4.9.0 postinstall: node scripts/build.js
#实际是因为sass安装时获取源的问题,使用cnpm进行安装
npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm install node-sass --save
启动成功,如下图所示:
- 启动完成后会自动打开浏览器访问 http://localhost:8001
- 输入admin / admin 成功进入后台,说明系统搭建成功!
2.逆向生成微服务
2.1.代码生成器
克隆 renren-generator 改名 gmall-generator 拷贝到 gmall 工程中,并聚合到 modules中
git clone https://gitee.com/renrenio/renren-generator.git
<modules><module>gmall-generator</module>
</modules>
2.2.快速构建微服务
商品服务 gmall-product 基础代码生成步骤:
修改代码生成器 gmall-generator 配置:
1)application.yml
spring:datasource:type: com.alibaba.druid.pool.DruidDataSource#MySQL配置driverClassName: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://192.168.56.10:3306/gmall_pms?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghaiusername: rootpassword: root
2)generator.properties
# 域名
mainPath=com.atguigu
# 项目包名
package=com.atguigu.gmall
# 模块名
moduleName=product
# 开发人员
author=zhangwen
# 开发者Email
email=1466787185@qq.com
# 数据库表前缀(类名不会包含表前缀)
tablePrefix=pms_
3)修改Controller 生成类,去除 shiro 相关注解,后续项目中使用 Spring Security
- 进入到 renren-generator/src/main/resources/template/Controller.java.vm
- 注释 import org.apache.shiro.authz.annotation.RequiresPermissions;
- 注释 Controller.java.vm 模板中所有Method方法 @RequiresPermissions
4)运行项目,进入到 代码生成器 控制台,全选 -> 生成代码
5)解压生成的代码包,将 main 文件夹全部拷贝到 gmall-product/src/ 目录下即可
6)按照 gmall-product 基础代码生成步骤,依次生成其它服务的代码
- gmall-order
- gmall-member
- gmall-coupon
- gmall-ware
3.创建公共服务模块
公共服务模块: gmall-common
- 每个微服务公共的依赖,Bean,工具类等放入到这里
- 每个微服务都引入 gmall-common
3.1.gmall-common
3.1.1.创建Maven工程
将 gmall-common 公共服务模块聚合到 modules 中
<modules><module>gmall-common</module>
</modules>
3.1.2.引入公共依赖
引入公共依赖,后续根据需要再依次引入所需的公共依赖
<!-- 微服务公共依赖 -->
<dependencies><!-- mysql --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.21</version></dependency><!-- mybatis-plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.3.2</version></dependency><!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.12</version><scope>provided</scope></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpcore</artifactId><version>4.4.13</version></dependency><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>2.6</version></dependency>
</dependencies>
3.2.工具类
3.2.1.com.atguigu.common.utils
- Constant
- PageUtils
- Query
- R
3.2.2.com.atguigu.common.xss
- SQLFilter
3.2.3.com.atguigu.common.exception
- RRException
4.整合MyBatis-Plus
4.1.MyBatis-Plus介绍
MyBatis-Plus 官网:https://baomidou.com/
4.2.导入依赖
在 gmall-common 公共模块中导入依赖
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.3.2</version>
</dependency>
4.3.数据源配置
官网配置
4.3.1.引入数据库驱动
MySQL Connector/J Versions
在 gmall-common 公共模块中导入依赖
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.21</version>
</dependency>
4.3.2.配置数据源
在商品服务 gmall-product 的 application.yml 配置数据源相关信息
spring:datasource:url: jdbc:mysql://192.168.56.10:3306/gmall_pms?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghaidriver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: root
4.4.配置MyBatis-Plus
4.4.1.使用@MapperScan
在服务启动类上使用 @MapperScan
@MapperScan(“com.atguigu.gmall.product.dao”)
4.4.2.SQL映射文件
告诉MyBatis-Plus,SQL映射文件位置
mybatis-plus:mapper-locations: classpath:/mapper/product/*.xmlglobal-config:db-config:id-type: auto #id自增,后续分库分表后再使用其它方式
4.4.3.单元测试
@SpringBootTest
class GmallProductApplicationTests {@Autowiredprivate BrandService brandService;/*** 测试插入*/@Testvoid testSave() {BrandEntity brandEntity = new BrandEntity();brandEntity.setName("华为");brandService.save(brandEntity);}/*** 测试更新*/@Testvoid testUpdate() {BrandEntity brandEntity = new BrandEntity();brandEntity.setBrandId(1L);brandEntity.setDescript("华为");brandService.updateById(brandEntity);}/*** 测试查询*/@Testvoid testQuery() {List<BrandEntity> list = brandService.list(new QueryWrapper<BrandEntity>().eq("brand_id", 1L));list.forEach(item -> {System.out.println(item);});}
}
测试结果:
对其它服务模块依次进行测试:
- gmall-coupon
- gmall-member
- gmall-order
- gmall-ware
在每个微服务模块 pom 文件中导入公共模块 gmall-common
<dependency><groupId>com.atguigu.gmall</groupId><artifactId>gmall-common</artifactId><version>0.0.1-SNAPSHOT</version></dependency>
修改每个模块的 application.yml 配置文件,主要是 port 和 数据库名称
server:port: 7000
spring:datasource:url: jdbc:mysql://192.168.56.10:3306/gmall_oms?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghaidriver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: root
mybatis-plus:mapper-locations: classpath:/mapper/order/*.xmlglobal-config:db-config:id-type: auto
微服务端口规划
- 优惠服务(gmall-coupon):5000
- 会员服务(gmall-member):6000
- 订单服务(gmall-order):7000
- 商品服务(gmall-product):8000
- 仓储服务(gmall-ware):9000
第4天-搭建项目(快速搭建电商平台后台管理系统及逆向生成微服务基本功能)相关推荐
- 搭建项目-快速搭建电商平台后台管理系统及逆向生成微服务基本功能
1 快速搭建电商平台后台管理系统 目前在Gitee开源软件中,人人开源和若依关注度比较高,优品电商平台后台系统采用人人开源的框架来快速构建,完成基本的CRUD,开发更加关注复杂业务.高并发.高可用以及 ...
- 电商平台后台管理系统--->项目前期准备(需求分析、系统设计、环境搭建与配置文件)
1 绪论 在计算机时代日益发展的今天,计算机技术正快速融入这个社会的每一个领域.自计算机应用于管理领域以来,信息系统的开发与应用获得惊人的发展,电子商务也应运而生. 随着电子商务网站的经营不断扩大,有 ...
- 电商平台后台管理系统--环境搭建与管理员登录(一)
将之前写好的ssm复制,重新命名为myecpbm,然后修改相关文件名和配置,文件目录结构和要修改的项目名如下图一 图一 1.选中改文件,Window==>show view==>Navig ...
- 电商平台后台管理系统项目介绍
MIMO电商平台后台管理系统 项目简介 基于 Vue3 + Vite2 + Typescript 开发的电子商务平台,组件库使用 element plus: 数据为 mock 模拟,登录账号密码随意填 ...
- 基于SSM框架的电商平台后台管理系统
基于SSM框架的电商平台后台管理系统 1.主要技术: 2.需求分析 数据库表结构 项目目录结构 运行效果: 源码获取两种方式 下载地址: 源码在这里 1.主要技术: Spring SpringMVC ...
- 电商平台后台管理系统
程序设计逻辑简单,适合观摩学习使用. 文章目录 前言 一.开发技术和工具 二.功能模块 3.运行截图 总结 前言 一个电商网站,既在于它的网站前台设计制作的精良优美,更在于电商平台 后台的实用性和便捷 ...
- 电商平台后台管理系统--->系统详细设计(订单管理模块)
5.3 订单管理 订单管理包括创建订单.查询订单.删除订单和查看订单明细等功能 5.3.1 订单列表显示 1.前端页面 (1)效果图 图5.11 订单列表显示页面 (2)前面页面主要技术介绍及主要功能 ...
- 电商平台后台管理系统--->操作方法说明
目录 6 操作方法说明 6.1 登录首页 (1)输入http://localhost:8080/admin_login.jsp登录到后台登录页面 (2)输入管理员账号:admin,密码:123456即 ...
- 电商平台后台管理系统--->系统详细设计(用户管理模块)
5.4 用户管理 5.4.1客户列表显示 1.前端页面 (1)效果图 图5.19 客户列表页面 (2)前端页面主要技术介绍及主要功能 在该页面中定义了三个id的标签,第一个id为userListTb的 ...
最新文章
- 中学再不学编程就晚了?MIT、JHU研究:程序员大脑思考代码的机制不对劲
- 打造完全绿色的TOTAL COMMANDER
- Crawler:基于urllib+requests库+伪装浏览器实现爬取国内知名招聘网站,上海地区与机器学习有关的招聘信息(2018.4.30之前)并保存在csv文件内
- 中文通用百科知识图谱(CN-DBpedia)
- XenServer 6.5实战系列之三:Prepare for XenServer 6.5
- 重启服务器之home下文件全没,小白宝典——树莓派实用工具分享(大神绕路)
- 农历算法-ASP.NET(C#)(转)
- 云小课|DGC数据开发之基础入门篇
- 再谈谈ADO.NET Data Service
- 如何不用更改底层来实现Dao多样化
- MySQL高可用之PXC详解
- react-native之react-native-vector-icons
- rhel6.6的内核源码安装与BCM4322无线网卡驱动的安装
- ISFP——思想起决定作用
- 图片怎么压缩到200K以内,这3个图片压缩方法,简单有效
- oracle中排序--拼音、笔画、偏旁部首
- jzoj 3426. 封印一击 (Standard IO)
- c++动态数组的优点,创建和删除
- 【已解决】使用keras对resnet, inception3进行fine-tune出现训练集准确率很高但验证集很低的问题(BN)
- 2016/10/08 TCL技术笔试题目
热门文章
- 相继上一篇,thingsboard的二次开发环境配置和简单的logo替换
- SLC MLC 和TLC
- HTML5版切水果游戏 HTML5游戏极品源码下载
- linux 版本号 笔记本_在笔记本电脑上安装Linux完全版
- 怎么用手机png转jpg?手机图片格式转换器推荐
- FID(Fusion-in-Decoder models)
- 活动抽奖Java抽奖算法
- visual2019没有勾选的在如何加入_批量下载天猫商品时,如何过滤gif格式详情图的实例...
- Android 锁屏状态下启动应用很慢的原因分析
- 计算流体力学简介(一)——一些基本概念