https://gitee.com/mrlinxi/gulimall 源码地址

一、项目介绍

1.1 项目背景

市面上有 5 种常见的电商模式 B2B、B2B、C2B、C2C、O2O

  • B2B(Business to Business),是指商家和商家建立的商业关系,如 阿里巴巴,
  • B2C(Business to Consumer) 就是我们经常看到的供应商直接把商品买个用户,即 “商对客” 模式,也就是我们呢说的商业零售,直接面向消费销售产品和服务,如苏宁易购,京东,天猫,小米商城
  • C2B (Customer to Business),即消费者对企业,先有消费者需求产生而后有企业生产,即先有消费者提出需求,后又生产企业按需求组织生产
  • C2C (Customer to Consumer) 客户之间吧自己的东西放到网上去卖 如 淘宝 咸鱼
  • O2O (Online To Offline),也即将线下商务的机会与互联网结合在一起,让互联网成为线下交易前台,线上快速支付,线下优质服务,如:饿了吗,美团,淘票票,京东到家

gulimall是一个B2C模式的电商平台。

1.2 项目架构图

1.2.1 微服务架构

谷粒商城-微服务架构图.jpg

1.2.2 微服务划分

image.png

二、环境搭建

该项目许多软件都安装在Linux服务器上,这里我们使用虚拟机模拟服务器软件安装,这里使用的是 VMware + CentOS7 + Xshell。 这里就不详细说明虚拟机以及centos的安装过程了,讲道理学到这里的应该或多或少的玩过不少次了。

2.1 安装docker

虚拟化容器技术。Docker基于镜像,可以秒级启动各种容器。每一种容器都是一个完整的运行
环境,容器之间互相隔离。
docker安装文档

2.1.1 删除老版本的docker

  1. # 如果直接是root用户,不需要加sudo
  2. sudo yum remove docker \
  3. docker-client \
  4. docker-client-latest \
  5. docker-common \
  6. docker-latest \
  7. docker-latest-logrotate \
  8. docker-logrotate \
  9. docker-engine

2.1.2 安装依赖包并设置存储库

  1. # 安装依赖包
  2. sudo yum install -y yum-utils
  3. # 设置存储库
  4. sudo yum-config-manager \
  5. --add-repo \
  6. https://download.docker.com/linux/centos/docker-ce.repo

image.png

2.1.3 安装docker

  1. sudo yum install docker-ce docker-ce-cli containerd.io

2.1.4 docker的使用以及配置

启动docker: sudo systemctl start docker root用户不用sudo
检查docker版本:docker -v
查看docker已有镜像:sudo docker images
设置docker开机启动(根据自己需求来):sudo systemctl enable docker
取消docker开机启动: sudo systemctl disable docker

设置国内镜像仓库
docker默认是从docker hub中下载镜像的,但是速度很慢,所以我们需要将镜像仓库切换到国内。这里我们使用阿里云的镜像加速
登陆阿里云,进入控制台-产品与服务-容器镜像服务,复制对应系统的镜像加速语句即可。阿里云镜像加速器

  1. # 在etc下创建docker文件夹
  2. sudo mkdir -p /etc/docker
  3. # 修改配置,设置镜像
  4. sudo tee /etc/docker/daemon.json <<-'EOF'
  5. {
  6. "registry-mirrors": ["https://hbxyofct.mirror.aliyuncs.com"]
  7. }
  8. EOF
  9. sudo systemctl daemon-reload
  10. sudo systemctl restart docker

2.2 通过Docker安装MySql

这里演示了mysql5跟mysql8,自行选择安装

2.2.1 mysql5

1. 拉取mysql5的镜像

安装对应版本的mysql:sudo docker pull mysql:5.7 如果不加":版本号"默认下载最新版本。通过docker images命令可以查看当前所有的镜像。
image.png

2. 启动mysql5

  1. sudo docker run -p 3306:3306 --name mysql \
  2. -v /mydata/mysql/log:/var/log/mysql \
  3. -v /mydata/mysql/data:/var/lib/mysql \
  4. -v /mydata/mysql/conf:/etc/mysql \
  5. -e MYSQL_ROOT_PASSWORD=10086 \
  6. -d mysql:5.7
  7. # 设置mysql随docker启动,看自己需求
  8. docker update mysql --restart=always

参数说明:

  • -p 3306:3306:将容器的3306端口映射到主机的3306端口
  • —name:给容器命名
  • -v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机
  • -v /mydata/mysql/data:/var/lib/mysql:将
  • -v /mydata/mysql/conf:/etc/mysql:将配置文件挂载到主机
  • -e MYSQL_ROOT_PASSWORD=10086:初始化root用户的密码为root
  • -d mysql:5.7:后台运行mysql5.7镜像

    3. 修改mysql配置文件

    vim /mydata/mysql/conf/my.cnf
    1. [client]
    2. default-character-set=utf8
    3. [mysql]
    4. default-character-set=utf8
    5. [mysqld]
    6. init_connect='SET collation_connection = utf8_unicode_ci'
    7. init_connect='SET NAMES utf8'
    8. character-set-server=utf8
    9. collation-server=utf8_unicode_ci
    10. skip-character-set-client-handshake
    11. # 解决mysql连接慢的问题,跳过域名解析
    12. skip-name-resolve

    2.2.2 mysql8

    1. 拉取mysql8的镜像

    docker pull mysql:8.0.22

    2. 启动mysql8

    ```shell sudo docker run -p 3333:3306 —name mysql8 \ -v /mydata/mysql8/log:/var/log/mysql \ -v /mydata/mysql8/data:/var/lib/mysql \ -v /mydata/mysql8/conf:/etc/mysql \ -v /mydata/mysql8/mysql-files:/var/lib/mysql-files \ -e MYSQL_ROOT_PASSWORD=10086 \ -d mysql:8.0.22

设置mysql随docker启动,看自己需求

docker update mysql8 —restart=always

  1. <a name="rcY5Q"></a>
  2. #### 3. 修改mysql配置
  3. `vim /mydata/mysql8/conf/my.cnf`
  4. ```shell
  5. [client]
  6. default-character-set=utf8
  7. [mysql]
  8. default-character-set=utf8
  9. [mysqld]
  10. init_connect='SET collation_connection = utf8_unicode_ci'
  11. init_connect='SET NAMES utf8'
  12. character-set-server=utf8
  13. collation-server=utf8_unicode_ci
  14. skip-character-set-client-handshake
  15. # 解决mysql连接慢的问题,跳过域名解析
  16. skip-name-resolve
  17. # 修改时区
  18. default-time_zone='+8:00'

注:远程连接mysql8之前需要修改mysql8的密码加密模式,见docker笔记:mysql8远程访问

2.3 通过Docker安装redis

2.3.1. 拉取镜像

拉取redis镜像:docker pull redis

2.3.2. 创建配置文件并运行容器

创建redis配置文件目录以及redis.conf配置文件

  1. mkdir -p /mydata/redis-gulimall/conf
  2. touch /mydata/redis-gulimall/conf/redis.conf

新建并运行redis容器

  1. docker run -p 6379:6379 --name redis-gulimall \
  2. -v /mydata/redis-gulimall/data:/data \
  3. -v /mydata/redis-gulimall/conf/redis.conf:/etc/redis/redis.conf \
  4. -d redis redis-server /etc/redis/redis.conf
  5. # 设置redis随docker启动,看自己需求
  6. docker update redis --restart=always

注:这里指定redis-server通过/etc/redis/redis.conf的配置文件启动,但docker挂载容器数据卷的时候如果没有先新建redis.conf文件的话,他会认为redis.conf是一个目录,所以需要提前在宿主机数据卷下建好redis.conf配置文件。
现在配置文件是空的,但是不影响redis 的使用。
测试一下redis:docker exec -it redis-gulimall redis-cli
image.png

配置redis持久化——aof(默认是rdb)
修改/mydata/redis-gulimall/conf/redis.conf,在里面添加以下内容:

  1. vim /mydata/redis-gulimall/conf/redis.conf
  2. # 启动aof持久化
  3. appendonly yes
  4. # 直接用这个命令也可以
  5. echo "appendonly yes" >> /mydata/redis-gulimall/conf/redis.conf
  6. # 重启redis
  7. docker restart redis-gulimall

更多配置信息:redis6.2 配置

2.4 Windows开发环境

2.4.1. Maven & jdk

jdk最好是8以上。
maven不管你是什么版本,换源,设置jdk,配置文件在maven的安装目录的conf/settings.xml

  1. # 配置阿里云镜像
  2. <mirrors>
  3. <mirror>
  4. <id>nexus-aliyun</id>
  5. <mirrorOf>central</mirrorOf>
  6. <name>Nexus aliyun</name>
  7. <url>http://maven.aliyun.com/nexus/content/groups/public</url>
  8. </mirror>
  9. </mirrors>
  10. # 配置jdk,不配也行,在项目的pom文件里指定也可以,我用的jdk1.8
  11. <profiles>
  12. <profile>
  13. <id>jdk-1.8</id>
  14. <activation>
  15. <activeByDefault>true</activeByDefault>
  16. <jdk>1.8</jdk>
  17. </activation>
  18. <properties>
  19. <maven.compiler.source>1.8</maven.compiler.source>
  20. <maven.compiler.target>1.8</maven.compiler.target>
  21. <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
  22. </properties>
  23. </profile>
  24. <profiles>

2.4.2. IDEA & VsCode(前端要用)

① IDEA 插件

Lombok和mybatisx
image.pngimage.png

② 下载安装VsCode

安装插件:Auto Close Tag、Auto Rename Tag、Chinese、ESLint、HTML CSS Support、HTML Snippets、JavaScript(ES6) code snippets、Live Server、open in browser、Vetur

2.4.3. 安装配置Git

因为github连接不稳定,所以我们这里使用码云

① 配置git,进入git bash

  1. # 配置用户名
  2. git config --global user.name "username" //(名字)
  3. # 配置邮箱
  4. git config --global user.email "username@email.com" //(注册账号时用的邮箱)

② 配置SSH免密登陆

生成/添加SSH公钥 现在官网上例子是使用ed25519类型的ssh key,我这里用的rsa,在git bash中输入以下命令

  1. # ssh-keygen -t ed25519 -C "xxxxx@xxxxx.com"
  2. # 使用rsa
  3. ssh-keygen -t rsa -C "mrlinxi@vip.qq.com"
  4. # 使用ed25519也可以
  5. ssh-keygen -t ed25519 -C "mrlinxi@vip.qq.com"

注意:这里的 xxxxx@xxxxx.com 只是生成的 sshkey 的名称,并不约束或要求具体命名为某个邮箱。
现网的大部分教程均讲解的使用邮箱生成,其一开始的初衷仅仅是为了便于辨识所以使用了邮箱

依照提示完成三次回车,即可生成ssh key。通过查看C:\Users\admin\.ssh目录下会有两个文件,分别对应公钥和私钥
image.png
或者直接在git bash中输入cat ~/.ssh/id_rsa.pub查看公钥(如果不是rsa加密方式,文件名就是id_加密方式.pub
然后进入gitee,在设置里面找到SSH公钥,将.pub文件里面的内容复制进去:
image.png
添加后,在终端输入ssh -T git@gitee.com,首次使用需要确认并添加主机到本机SSH可信列表。若返回 Hi XXX! You’ve successfully authenticated, but Gitee.com does not provide shell access. 内容,则证明添加成功。
image.png

2.5 环境——从Gitee初始化一个项目

2.5.0. Gitee新建仓库,克隆到本地

image.png
创建好之后,复制仓库链接,然后通过链接新建一个项目
image.png
image.png

2.5.1. 创建微服务

商品服务、仓储服务、订单服务、优惠券服务、用户服务
共同点:

  1. 依赖 spring web、openfeign
  2. 服务包名:com.atguigu.gulimall.xxxx(product/order/ware/coupon/member)
  3. 模块名:
    • 优惠券服务:gulimall-coupon
    • 用户服务:gulimall-member
    • 订单服务:gulimall-order
    • 商品服务:gulimall-product
    • 仓储服务:gulimall-ware

      方式一:单独创建每个微服务,父工程pom聚合

      创建各个微服务:
      这里每个微服务均通过Spring Initializr创建:
      image.png
      这里我选的SpringBoot是2.5.7,自动关联SpringCloud2020.0.4。
      注意:使用Spring Initializr无法选自较低版本的SpringBoot,如要需要使用可以手动更改版本号。
      这里还没有使用到SpringCloud Alibaba,(SpringCloud Alibaba 版本对应说明),因为后面要使用到SpringCloud Alibaba的组件,所以在版本选择时最好一步到位。
      这里建好后,pom文件里spring-boot-maven-plugin会爆红,加上spring-boot版本即可。

使用父工程的pom聚合各个微服务:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <groupId>com.atguigu.gulimall</groupId>
  6. <artifactId>gulimall</artifactId>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <packaging>pom</packaging>
  9. <name>gulimall</name>
  10. <description>gulimall</description>
  11. <modules>
  12. <module>gulimall-coupon</module>
  13. <module>gulimall-member</module>
  14. <module>gulimall-order</module>
  15. <module>gulimall-product</module>
  16. <module>gulimall-ware</module>
  17. </modules>
  18. </project>

方式二:多模块开发,通过父pom管理子模块依赖

注:这里我采用通过父工程的pom文件管理子模块的依赖,跟视频中不一样,在SpringCloud中使用的是这种方法,比较简洁

多模块开发中,使用父模块对子模块的管理非常方便(前面Spring Cloud使用的就是这种方式)。

  • 父模块pom中的属性会被子模块继承
  • 父模块pom中,在中可以进行子模块依赖的版本管理,子模块继承父模块之后,提供作用:锁定版本 + 子模块不用再写 version。
  • 此外,父模块中可以添加依赖作为全局依赖,子模块自动继承。外的中定义全局依赖。

这里参考SpringCloud Alibaba 版本对应说明中的版本,我选择的SpringBoot版本为2.3.12.RELEASE,SpringCloud版本为Hoxton.SR12
父pom文件:
这里用的版本跟前面一致

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <groupId>com.atguigu.gulimall</groupId>
  6. <artifactId>gulimall</artifactId>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <packaging>pom</packaging>
  9. <modules>
  10. <module>gulimall-coupon</module>
  11. <module>gulimall-member</module>
  12. <module>gulimall-order</module>
  13. <module>gulimall-product</module>
  14. <module>gulimall-ware</module>
  15. </modules>
  16. <name>gulimall</name>
  17. <description>gulimall</description>
  18. <!-- 这里的属性会被子模块继承 -->
  19. <properties>
  20. <java.version>1.8</java.version>
  21. <spring-cloud.version>Hoxton.SR12</spring-cloud.version>
  22. <spring.boot.version>2.3.12.RELEASE</spring.boot.version>
  23. </properties>
  24. <dependencyManagement>
  25. <dependencies>
  26. <dependency>
  27. <groupId>org.springframework.cloud</groupId>
  28. <artifactId>spring-cloud-dependencies</artifactId>
  29. <version>${spring-cloud.version}</version>
  30. <type>pom</type>
  31. <scope>import</scope>
  32. </dependency>
  33. <dependency>
  34. <groupId>org.springframework.boot</groupId>
  35. <artifactId>spring-boot-dependencies</artifactId>
  36. <version>${spring.boot.version}</version>
  37. <type>pom</type>
  38. <scope>import</scope>
  39. </dependency>
  40. </dependencies>
  41. </dependencyManagement>
  42. <!-- 这里的依赖会被子模块继承 -->
  43. <dependencies>
  44. <dependency>
  45. <groupId>org.springframework.boot</groupId>
  46. <artifactId>spring-boot-starter-web</artifactId>
  47. </dependency>
  48. <dependency>
  49. <groupId>org.springframework.cloud</groupId>
  50. <artifactId>spring-cloud-starter-openfeign</artifactId>
  51. </dependency>
  52. <dependency>
  53. <groupId>org.springframework.boot</groupId>
  54. <artifactId>spring-boot-starter-test</artifactId>
  55. <scope>test</scope>
  56. </dependency>
  57. </dependencies>
  58. <build>
  59. <plugins>
  60. <plugin>
  61. <groupId>org.springframework.boot</groupId>
  62. <artifactId>spring-boot-maven-plugin</artifactId>
  63. <version>2.5.7</version>
  64. </plugin>
  65. </plugins>
  66. </build>
  67. </project>

子模块pom文件——以coupon为例
因为子模块继承了父工程的依赖以及版本,因此子模块的pom很简单。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <parent>
  6. <groupId>com.atguigu.gulimall</groupId>
  7. <artifactId>gulimall</artifactId>
  8. <version>0.0.1-SNAPSHOT</version>
  9. </parent>
  10. <groupId>com.atguigu.gulimall</groupId>
  11. <artifactId>gulimall-coupon</artifactId>
  12. <version>0.0.1-SNAPSHOT</version>
  13. <name>gulimall-coupon</name>
  14. <description>优惠券模块</description>
  15. </project>

2.5.2. 将各模块纳入版本控制(VCS)

修改父工程的.gitignore文件,设置不需要提交的文件
image.png
然后将剩下的文件纳入版本控制
image.png
image.png
想要提交到Gitee,IDEA还需要安装Gitee的插件,安装好之后便可提交:
image.pngimage.png
commit是提交到本地仓库,commit and push是提交并推送到远程仓库(Gitee/Github)

2.6 数据库初始化

先下PowerDesigner16.5(下不下无所谓,资料提供了所有的sql语句下载地址。软件打开gmall_数据库设计.pdm文件
image.png
这里面有很多表,那么怎么在数据库中创建这些表呢?
image.png
image.png
Preview就是全部建表语句。

2.6.1. 建库&建表

共有5个数据库,分别对应5个不同模块

  • gulimall_pms:product manage system 商品管理系统对应商品服务gulimall-product;
  • gulimall_oms:order manage system 订单管理系统对应订单服务gulimall-order;
  • gulimall_wms:ware manage system 库存管理系统对应订单服务gulimall-ware;
  • gulimall_sms:sale manage system 营销管理系统对应订单服务gulimall-coupon;
  • gulimall_ums:user manage system 用户管理系统对应订单服务gulimall-member;

注意:mysql8跟mysql5的字符集为utf8mb4时,默认的数据库排序规则不同,mysql8是utf8mb4_0900_ai_ci,mysql5是utf8mb4_general_ci。

建库语句:

  1. # mysql8
  2. CREATE DATABASE IF NOT EXISTS gulimall_wms CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
  3. CREATE DATABASE IF NOT EXISTS gulimall_oms CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
  4. CREATE DATABASE IF NOT EXISTS gulimall_pms CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
  5. CREATE DATABASE IF NOT EXISTS gulimall_ums CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
  6. CREATE DATABASE IF NOT EXISTS gulimall_sms CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
  7. # mysql5
  8. CREATE DATABASE IF NOT EXISTS gulimall_wms CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  9. CREATE DATABASE IF NOT EXISTS gulimall_oms CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  10. CREATE DATABASE IF NOT EXISTS gulimall_pms CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  11. CREATE DATABASE IF NOT EXISTS gulimall_ums CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  12. CREATE DATABASE IF NOT EXISTS gulimall_sms CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

建表sql:
gulimall_oms.sql gulimall_pms.sql gulimall_sms.sql gulimall_ums.sqlgulimall_wms.sql

三、快速开发——代码生成

通过人人开源生成代码https://gitee.com/renrenio
renren-fast后台管理系统:https://gitee.com/renrenio/renren-fast
renren-fast-vue后台管理系统的前端:https://gitee.com/renrenio/renren-fast-vue
renren-generator逆向工程代码生成器:https://gitee.com/renrenio/renren-generator

使用git clone 将renren-fast和renren-fast-vue克隆到本地,然后将其中的.git目录删除,renren-fast放到我们的项目下。renren-fast-vue之后会使用VSCode打开。

3.1 gulimall中加入renren-fast

在父工程pom中加入<module>renren-fast</module>

然后在renren-fast模块下,有个db文件夹,里面有很多sql文件,复制mysql.sql里面的内容(因为我们用的mysql)。随后在我们的数据库中新建gulimall_admin数据库,执行mysql.sql里面的数据库语句在gulimall_admin库中创建表

  1. # 创建gulimall_admin数据库
  2. # mysql5
  3. CREATE DATABASE IF NOT EXISTS gulimall_admin CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  4. # mysql8
  5. CREATE DATABASE IF NOT EXISTS gulimall_admin CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;

然后可以看到renren-fast的配置文件,里面使用的dev配置文件。
image.png

修改dev配置文件中的数据库配置,我们要连的是虚拟机docker容器中的数据库:
image.png
注意这里我加上了&useSSL=false,不然启动报错communication link failure。

注:这里启动可能会报错 You aren’t using a compiler supported by lombok, so lombok will not work and has been disabled. 解决方式:https://blog.csdn.net/wanniwa/article/details/109155143

等启动完成,访问http://localhost:8080/renren-fast/,出现以下json字符串表示访问成功。因为这里只是个后台,我们需要通过renren-fast-vue前台访问。
image.png

注意:renren-fast的pom文件会报很多红色的错误,这个并不影响启动;同时如果renrne-fast的java代码中爆红,原因是项目有没加入jdk。在Project Structure的SDKs中加入jdk即可。

3.2 通过VSCode运行renren-fast-vue

03、前端开发基础知识.pdf

3.2.1 安装前端框架需要环境

安装node.js

我们关注与 node.js 的 npm 功能就行;NPM 是随同 NodeJS 一起安装的包管理工具,JavaScript-NPM,Java-Maven;
安装参考博客
直接百度下载安装即可(视频里面用的是10.16.3 最好下一样的版本 https://nodejs.org/dist/v10.16.3/,下msi文件)。nodejs安装好后(自动添加了环境变量),下载的插件文件和混存文件默认保存在C:\Users\admin\AppData\Roaming路径下,我不想让他放在C盘,所以这里设置了这些文件保存的默认路径,在CMD下执行如下语句(自己把文件夹建好,建议放在nodejs的安装目录下):

  1. npm config set prefix "H:\DevelopmentTools\nodejs\node_global"
  2. npm config set cache "H:\DevelopmentTools\nodejs\node_cache"
  1. 随后,编辑用户变量里的Path,将响应的npm路径修改为上面设置的node_global路径;
  2. 在系统变量中新建一个变量名NODE_PATH,值为node_modules的路径(位于nodejs的安装目录下)

安装后在cmd中输入node -v npm -v检查是否安装成功。
配置npm使用淘宝镜像:npm config set registry https://registry.npm.taobao.org
配置之后验证是否成功(返回刚刚设置的地址即成功):npm config get registry

安装完node.js后,打开VSCode,使用VSCode打开renren-fast-vue,进入控制台,在终端中输入:npm install (让npm去下载我们前端项目依赖的组件)
image.png

踩坑:
npm install报错:无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查。
通过管理员权限启动VSCode,然后删除当前终端,重开一个。

报错:
image.png
这里缺少了python,需要安装python3.0以上,并配置全局变量。我之前有装过anaconda,所以直接配置anaconda带的python,没有的下一个python配置全局变量。(但是我在另一台电脑上没有装python也ok了很迷,可能是我直接把装好的文件拷到另一台电脑上了)

运行前端服务

在终端中输入npm run dev即可运行前端项目。
可以看到前端刷验证码,后端有日志输出:
image.png
我们来登陆一下,默认账号密码都是admin
image.png

3.3 renren-generator代码生成器

renren-generator可以为我们每个微服务生成基本的CRUD代码。将https://gitee.com/renrenio/renren-generator.git克隆到本地。然后删除.git文件夹,随后将其放到我们自己的项目中来。父工程pom <module>renren-generator</module>

3.3.0 通过generator生成product模块的代码

为了给每个模块生成基本的CRUD代码,我们需要修改renren-generator中的配置文件application.yml:
image.png
generator.properties:
image.png

随后启动,默认通过80端口访问,生成全部代码:
image.png
我们会得到一个压缩包,里面有一个main文件夹和很多sql文件。
在main\resources\mapper文件夹下有一个与模块同名的文件夹里面是所有的SQL映射文件。
在main\java\com\atguigu\gulimall\gulimallproduct,文件夹下生成了controller、dao、entity、service等代码。
然后我们将生成的整个main文件夹粘贴到对应微服务的src目录下。可以看到MVC层的代码都生成好了,但是报错,目前都不能使用(因为缺少对应的依赖)。
image.png
这里缺少公共工具类,以及一些依赖。

3.4 创建common模块存放公共类

3.4.0 创建common模块

创建一个gulimall-common的maven模块。我们想将每一个微服务模块中,公共的类以及依赖放到common中。

在common模块下新建com.atguigu.commom.utils包,从renren-fast的io.renren.common.utils包下复制PageUtils、Query、R、Constant这几个类过来。

直接将renren-fast下的xss文件夹复制到com.atguigu.commom.utils包下(删除XssFilterXssHttpServletRequestWrapper),然后在Query中改一下SQLFilter的包,改成我们自己的。同样的将renren-fast下的exception包下的RRException复制到com.atguigu.commom.utils.exception包下,然后重新在SQLFilter中导一下RRException的包。

3.4.1 父工程pom

mysql5.7没有对应的mysql-java-connector驱动,官方解释可以直接用mysql8。
后面考虑到要使用spring gateway需要将spring-boot-starter-web剔除,这里把父工程中的spring-boot-starter-webspring-cloud-starter-openfeign依赖都放到common模块中去(其实把openfeign放到common中就可以了,因为只有web不需要引入到gateway中)。这样在后面创建gateway模块时,引入common直接exclusion掉web即可。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <groupId>com.atguigu.gulimall</groupId>
  6. <artifactId>gulimall</artifactId>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <packaging>pom</packaging>
  9. <name>gulimall</name>
  10. <description>gulimall</description>
  11. <modules>
  12. <module>gulimall-coupon</module>
  13. <module>gulimall-member</module>
  14. <module>gulimall-order</module>
  15. <module>gulimall-product</module>
  16. <module>gulimall-ware</module>
  17. <module>renren-fast</module>
  18. <module>renren-generator</module>
  19. <module>gulimall-common</module>
  20. </modules>
  21. <!-- 这里的属性会被子模块继承 -->
  22. <properties>
  23. <java.version>1.8</java.version>
  24. <spring-cloud.version>2020.0.4</spring-cloud.version>
  25. <spring.boot.version>2.5.7</spring.boot.version>
  26. <mybatis-plus.version>3.4.2</mybatis-plus.version>
  27. <lombok.version>1.18.20</lombok.version>
  28. <http.components.version>4.4.13</http.components.version>
  29. <commons.lang.version>2.6</commons.lang.version>
  30. <mysql.version>8.0.22</mysql.version>
  31. </properties>
  32. <dependencyManagement>
  33. <dependencies>
  34. <dependency>
  35. <groupId>org.springframework.cloud</groupId>
  36. <artifactId>spring-cloud-dependencies</artifactId>
  37. <version>${spring-cloud.version}</version>
  38. <type>pom</type>
  39. <scope>import</scope>
  40. </dependency>
  41. <dependency>
  42. <groupId>org.springframework.boot</groupId>
  43. <artifactId>spring-boot-dependencies</artifactId>
  44. <version>${spring.boot.version}</version>
  45. <type>pom</type>
  46. <scope>import</scope>
  47. </dependency>
  48. <!--mybatis plus-->
  49. <dependency>
  50. <groupId>com.baomidou</groupId>
  51. <artifactId>mybatis-plus-boot-starter</artifactId>
  52. <version>${mybatis-plus.version}</version>
  53. </dependency>
  54. <!--lombok-->
  55. <dependency>
  56. <groupId>org.projectlombok</groupId>
  57. <artifactId>lombok</artifactId>
  58. <version>${lombok.version}</version>
  59. </dependency>
  60. <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore -->
  61. <dependency>
  62. <groupId>org.apache.httpcomponents</groupId>
  63. <artifactId>httpcore</artifactId>
  64. <version>${http.components.version}</version>
  65. </dependency>
  66. <!--commons-lang-->
  67. <dependency>
  68. <groupId>commons-lang</groupId>
  69. <artifactId>commons-lang</artifactId>
  70. <version>${commons.lang.version}</version>
  71. </dependency>
  72. <!--mysql-java-connector-->
  73. <dependency>
  74. <groupId>mysql</groupId>
  75. <artifactId>mysql-connector-java</artifactId>
  76. <version>${mysql.version}</version>
  77. </dependency>
  78. </dependencies>
  79. </dependencyManagement>
  80. <!--这里的依赖会被子模块继承,为了后面使用gateway,把web和openfeign放到common模块中-->
  81. <dependencies>
  82. <!-- <dependency>-->
  83. <!-- <groupId>org.springframework.boot</groupId>-->
  84. <!-- <artifactId>spring-boot-starter-web</artifactId>-->
  85. <!-- </dependency>-->
  86. <!-- <dependency>-->
  87. <!-- <groupId>org.springframework.cloud</groupId>-->
  88. <!-- <artifactId>spring-cloud-starter-openfeign</artifactId>-->
  89. <!-- </dependency>-->
  90. <dependency>
  91. <groupId>org.springframework.boot</groupId>
  92. <artifactId>spring-boot-starter-test</artifactId>
  93. <scope>test</scope>
  94. </dependency>
  95. </dependencies>
  96. <build>
  97. <plugins>
  98. <plugin>
  99. <groupId>org.springframework.boot</groupId>
  100. <artifactId>spring-boot-maven-plugin</artifactId>
  101. <version>${spring.boot.version}</version>
  102. <configuration>
  103. <fork>true</fork>
  104. <addResources>true</addResources>
  105. </configuration>
  106. </plugin>
  107. </plugins>
  108. </build>
  109. </project>

3.4.2 common模块pom

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <parent>
  6. <artifactId>gulimall</artifactId>
  7. <groupId>com.atguigu.gulimall</groupId>
  8. <version>0.0.1-SNAPSHOT</version>
  9. </parent>
  10. <modelVersion>4.0.0</modelVersion>
  11. <artifactId>gulimall-common</artifactId>
  12. <description>每一个微服务公共的依赖,bean,工具类等</description>
  13. <properties>
  14. <maven.compiler.source>8</maven.compiler.source>
  15. <maven.compiler.target>8</maven.compiler.target>
  16. </properties>
  17. <!--公共依赖,版本仍然通过父工程pom控制-->
  18. <dependencies>
  19. <!--web-->
  20. <dependency>
  21. <groupId>org.springframework.boot</groupId>
  22. <artifactId>spring-boot-starter-web</artifactId>
  23. </dependency>
  24. <!--openfeign-->
  25. <dependency>
  26. <groupId>org.springframework.cloud</groupId>
  27. <artifactId>spring-cloud-starter-openfeign</artifactId>
  28. </dependency>
  29. <!--mybatis plus-->
  30. <dependency>
  31. <groupId>com.baomidou</groupId>
  32. <artifactId>mybatis-plus-boot-starter</artifactId>
  33. </dependency>
  34. <!--lombok-->
  35. <dependency>
  36. <groupId>org.projectlombok</groupId>
  37. <artifactId>lombok</artifactId>
  38. </dependency>
  39. <!--httpcore -> HttpStatus-->
  40. <dependency>
  41. <groupId>org.apache.httpcomponents</groupId>
  42. <artifactId>httpcore</artifactId>
  43. <version>4.4.13</version>
  44. </dependency>
  45. <!--commons-lang-->
  46. <dependency>
  47. <groupId>commons-lang</groupId>
  48. <artifactId>commons-lang</artifactId>
  49. </dependency>
  50. <!--导入mysql驱动-->
  51. <dependency>
  52. <groupId>mysql</groupId>
  53. <artifactId>mysql-connector-java</artifactId>
  54. </dependency>
  55. </dependencies>
  56. </project>

3.4.3 product模块引入common依赖

gulimall-product模块的pom文件中引入common的依赖。

注:我这里跟视频里面不一样,我是通过父工程的pom来管理各个子模块的依赖版本,然后在common模块中引入公共依赖,通过依赖的传递性其他模块直接依赖common模块即可。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <parent>
  6. <groupId>com.atguigu.gulimall</groupId>
  7. <artifactId>gulimall</artifactId>
  8. <version>0.0.1-SNAPSHOT</version>
  9. </parent>
  10. <groupId>com.atguigu.gilumall</groupId>
  11. <artifactId>gulimall-product</artifactId>
  12. <version>0.0.1-SNAPSHOT</version>
  13. <name>gulimall-product</name>
  14. <description>gulimall-product</description>
  15. <dependencies>
  16. <dependency>
  17. <groupId>com.atguigu.gulimall</groupId>
  18. <artifactId>gulimall-common</artifactId>
  19. <version>0.0.1-SNAPSHOT</version>
  20. </dependency>
  21. </dependencies>
  22. </project>

3.4.3 调整代码生成规则

现在gulimall-product模块中只有controller报错,原因是代码生成的时候使用了shiro。
现在我们来看renren-generator下resource/template目录下的Controller.java.vm文件(这个文件就是用来生成controller类的,同文件夹下其他文件类似)
我们将@RequiresPermission注解都注释掉,别忘了最上面导入的包也要注释。(这个文件里面用快捷键注释是’##’,生成的代码会略过注释内容,如果想要生成的代码有注释内容用’//‘注释)
image.png
注释掉以后,生成的代码就不会有shiro的注解了。
随后我们重启逆向工程,重新生成一下代码。然后用新生成的controller替换掉product模块中的controller。这样我们的gulimall-product模块的逆向代码生成就完成了。

3.6 测试gulimall-product模块

3.6.0 整合MybatisPlus

整合mybatisplus:

  • 导入依赖:common中已经导入了mybatis-plus-boot-starter,mysql驱动在common中引入过了

    application.yml

    ```yaml

    配置数据源

    spring: datasource: username: root password: 10086 url: jdbc:mysql://192.168.190.135:3306/gulimall_pms?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai driver-class-name: com.mysql.cj.jdbc.Driver

配置mybatis-plus

mybatis-plus: mapper-locations: classpath:/mapper/*/.xml # 配置sql映射目录 global-config: db-config: id-type: auto # 配置主键自增

server: port: 10000

  1. <a name="EL2xw"></a>
  2. #### 主启动
  3. 使用@MapperScanner告诉MyBatis-Plus,Sql映射文件位置
  4. ```java
  5. package com.atguigu.gulimall.gulimallproduct;
  6. import org.mybatis.spring.annotation.MapperScan;
  7. import org.springframework.boot.SpringApplication;
  8. import org.springframework.boot.autoconfigure.SpringBootApplication;
  9. @SpringBootApplication
  10. @MapperScan(value = "com.atguigu.gulimall.gulimallproduct.dao")
  11. public class GulimallProductApplication {
  12. public static void main(String[] args) {
  13. SpringApplication.run(GulimallProductApplication.class, args);
  14. }
  15. }

3.6.1 测试

增加华为品牌

  1. package com.atguigu.gilumall.gulimallproduct;
  2. import com.atguigu.gulimall.gulimallproduct.GulimallProductApplication;
  3. import com.atguigu.gulimall.gulimallproduct.entity.BrandEntity;
  4. import com.atguigu.gulimall.gulimallproduct.service.BrandService;
  5. import org.junit.jupiter.api.Test;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.boot.test.context.SpringBootTest;
  8. // 这里必须要指明class,不然autowired报错
  9. // 我尝试用了Resource,编译不报错,运行报错
  10. @SpringBootTest(classes = GulimallProductApplication.class)
  11. class GulimallProductApplicationTests {
  12. @Autowired
  13. BrandService brandService;
  14. @Test
  15. void contextLoads() {
  16. //测试插入
  17. // BrandEntity brandEntity = new BrandEntity();
  18. // brandEntity.setName("华为");
  19. // brandService.save(brandEntity);
  20. // System.out.println("保存成功!");
  21. //测试更新
  22. // BrandEntity brandEntity = new BrandEntity();
  23. // brandEntity.setBrandId(1L);
  24. // brandEntity.setDescript("华为1");
  25. // brandService.updateById(brandEntity);
  26. //测试查询
  27. List<BrandEntity> brand_id = brandService.list(new QueryWrapper<BrandEntity>().eq("brand_id", 1L));
  28. brand_id.forEach(System.out::println);
  29. }
  30. }

@SpringBootTest注解不指明class报错:
image.png
指明后测试:插入成功,修改成功,查询成功
image.png
image.png

3.7 生成其他模块的代码

3.7.1 gulimall-coupon模块

使用generator生成代码

生成其他模块的代码只需要在renren-generator中修改application.yml文件中数据库url的数据库,和generator.properties文件中的模块信息即可,参考生成product模块代码
image.png
将生成代码的main直接复制到gulimall-coupon模块中。

pom

修改pom文件,引入common模块依赖

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <parent>
  6. <groupId>com.atguigu.gulimall</groupId>
  7. <artifactId>gulimall</artifactId>
  8. <version>0.0.1-SNAPSHOT</version>
  9. </parent>
  10. <groupId>com.atguigu.gulimall</groupId>
  11. <artifactId>gulimall-coupon</artifactId>
  12. <version>0.0.1-SNAPSHOT</version>
  13. <name>gulimall-coupon</name>
  14. <description>优惠券模块</description>
  15. <dependencies>
  16. <dependency>
  17. <groupId>com.atguigu.gulimall</groupId>
  18. <artifactId>gulimall-common</artifactId>
  19. <version>0.0.1-SNAPSHOT</version>
  20. </dependency>
  21. </dependencies>
  22. </project>

yml

  1. # 配置数据源
  2. spring:
  3. datasource:
  4. username: root
  5. password: 10086
  6. url: jdbc:mysql://192.168.190.135:3306/gulimall_sms?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
  7. driver-class-name: com.mysql.cj.jdbc.Driver
  8. # 配置mybatis-plus
  9. mybatis-plus:
  10. mapper-locations: classpath:/mapper/**/*.xml # 配置sql映射目录
  11. global-config:
  12. db-config:
  13. id-type: auto # 配置主键自增
  14. server:
  15. port: 7000

主启动

  1. package com.atguigu.gulimall.gulimallcoupon;
  2. import org.mybatis.spring.annotation.MapperScan;
  3. import org.springframework.boot.SpringApplication;
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;
  5. @SpringBootApplication
  6. @MapperScan("com.atguigu.gulimall.gulimallcoupon.dao")
  7. public class GulimallCouponApplication {
  8. public static void main(String[] args) {
  9. SpringApplication.run(GulimallCouponApplication.class, args);
  10. }
  11. }

测试

启动coupon微服务,访问http://localhost:8080/gulimallcoupon/coupon/list
image.png
这里我有个疑问,dao接口上都是有mapper注解的,讲道理不需要在主启动类上加mapperscan注解。但是如果不在主启动类上加mapperscan注解,便无法对数据库进行操作。

3.7.2 gulimall-member模块

使用generator生成代码

image.png
生成代码,将main文件夹直接复制到gulimall-member模块中。

pom

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <parent>
  6. <groupId>com.atguigu.gulimall</groupId>
  7. <artifactId>gulimall</artifactId>
  8. <version>0.0.1-SNAPSHOT</version>
  9. </parent>
  10. <groupId>com.atguigu.gulimall</groupId>
  11. <artifactId>gulimall-member</artifactId>
  12. <version>0.0.1-SNAPSHOT</version>
  13. <name>gulimall-member</name>
  14. <description>gulimall-member</description>
  15. <dependencies>
  16. <dependency>
  17. <groupId>com.atguigu.gulimall</groupId>
  18. <artifactId>gulimall-common</artifactId>
  19. <version>0.0.1-SNAPSHOT</version>
  20. </dependency>
  21. </dependencies>
  22. </project>

yml

  1. # 配置数据源
  2. spring:
  3. datasource:
  4. username: root
  5. password: 10086
  6. url: jdbc:mysql://192.168.190.135:3306/gulimall_ums?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
  7. driver-class-name: com.mysql.cj.jdbc.Driver
  8. # 配置mybatis-plus
  9. mybatis-plus:
  10. mapper-locations: classpath:/mapper/**/*.xml # 配置sql映射目录
  11. global-config:
  12. db-config:
  13. id-type: auto # 配置主键自增
  14. server:
  15. port: 8000

主启动

  1. package com.atguigu.gulimall.gulimallmember;
  2. import org.mybatis.spring.annotation.MapperScan;
  3. import org.springframework.boot.SpringApplication;
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;
  5. @MapperScan("com.atguigu.gulimall.gulimallmember.dao")
  6. @SpringBootApplication
  7. public class GulimallMemberApplication {
  8. public static void main(String[] args) {
  9. SpringApplication.run(GulimallMemberApplication.class, args);
  10. }
  11. }

测试

访问:http://localhost:8000/gulimallmember/growthchangehistory/list
image.png

3.7.3 gulimall-order模块

使用generator生成代码

image.png
生成代码,将main文件夹直接复制到gulimall-order模块中。

pom

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <parent>
  6. <groupId>com.atguigu.gulimall</groupId>
  7. <artifactId>gulimall</artifactId>
  8. <version>0.0.1-SNAPSHOT</version>
  9. </parent>
  10. <groupId>com.atguigu.gulimall</groupId>
  11. <artifactId>gulimall-order</artifactId>
  12. <version>0.0.1-SNAPSHOT</version>
  13. <name>gulimall-order</name>
  14. <description>gulimall-order</description>
  15. <dependencies>
  16. <dependency>
  17. <groupId>com.atguigu.gulimall</groupId>
  18. <artifactId>gulimall-common</artifactId>
  19. <version>0.0.1-SNAPSHOT</version>
  20. </dependency>
  21. </dependencies>
  22. </project>

yml

  1. server:
  2. port: 9000
  3. # 配置数据源
  4. spring:
  5. datasource:
  6. username: root
  7. password: 10086
  8. url: jdbc:mysql://192.168.190.135:3306/gulimall_oms?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
  9. driver-class-name: com.mysql.cj.jdbc.Driver
  10. # 配置mybatis-plus
  11. mybatis-plus:
  12. mapper-locations: classpath:/mapper/**/*.xml # 配置sql映射目录
  13. global-config:
  14. db-config:
  15. id-type: auto # 配置主键自增

主启动

  1. package com.atguigu.gulimall.gulimallorder;
  2. import org.mybatis.spring.annotation.MapperScan;
  3. import org.springframework.boot.SpringApplication;
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;
  5. @MapperScan("com.atguigu.gulimall.gulimallorder.dao")
  6. @SpringBootApplication
  7. public class GulimallOrderApplication {
  8. public static void main(String[] args) {
  9. SpringApplication.run(GulimallOrderApplication.class, args);
  10. }
  11. }

测试

访问:http://localhost:9000/gulimallorder/order/list
image.png

3.7.4 gulimall-ware模块

使用generator生成代码

image.png
复制生成代码的mian到gulimall-order模块中

pom

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <parent>
  6. <groupId>com.atguigu.gulimall</groupId>
  7. <artifactId>gulimall</artifactId>
  8. <version>0.0.1-SNAPSHOT</version>
  9. </parent>
  10. <groupId>com.atguigu.gulimall</groupId>
  11. <artifactId>gulimall-ware</artifactId>
  12. <version>0.0.1-SNAPSHOT</version>
  13. <name>gulimall-ware</name>
  14. <description>gulimall-ware</description>
  15. <dependencies>
  16. <dependency>
  17. <groupId>com.atguigu.gulimall</groupId>
  18. <artifactId>gulimall-common</artifactId>
  19. <version>0.0.1-SNAPSHOT</version>
  20. </dependency>
  21. </dependencies>
  22. </project>

yml

  1. server:
  2. port: 11000
  3. # 配置数据源
  4. spring:
  5. datasource:
  6. username: root
  7. password: 10086
  8. url: jdbc:mysql://192.168.190.135:3306/gulimall_wms?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
  9. driver-class-name: com.mysql.cj.jdbc.Driver
  10. # 配置mybatis-plus
  11. mybatis-plus:
  12. mapper-locations: classpath:/mapper/**/*.xml # 配置sql映射目录
  13. global-config:
  14. db-config:
  15. id-type: auto # 配置主键自增

主启动

  1. package com.atguigu.gulimall.gulimallware;
  2. import org.mybatis.spring.annotation.MapperScan;
  3. import org.springframework.boot.SpringApplication;
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;
  5. @MapperScan("com.atguigu.gulimall.gulimallware.dao")
  6. @SpringBootApplication
  7. public class GulimallWareApplication {
  8. public static void main(String[] args) {
  9. SpringApplication.run(GulimallWareApplication.class, args);
  10. }
  11. }

测试

访问:http://localhost:11000/gulimallware/purchase/list
image.png