0


谷粒商城笔记+踩坑(1)——架构、项目环境搭建、代码生成器

** 导航:**

谷粒商城笔记+踩坑汇总篇_谷粒商城笔记踩坑6_vincewm的博客-CSDN博客

1、项目介绍

1.1 微服务架构图

img

1.2. 微服务划分图

img

2、项目环境搭建

2.1. 虚拟机搭建环境

虚拟机VMware、centos7.

2.2. Linux安装docker、配置镜像加速

查看是否安装docker:

  1. docker
  1. # 1. 卸载之前的docker
  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
  10. # 2.需要的安装包
  11. yum install -y yum-utils
  12. # 3.设置镜像的仓库
  13. yum-config-manager \
  14. --add-repo \
  15. https://download.docker.com/linux/centos/docker-ce.repo
  16. # 默认是从国外的,不推荐
  17. # 推荐使用国内的
  18. yum-config-manager \
  19. --add-repo \
  20. https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  21. # 更新yum软件包索引
  22. yum makecache
  23. # 4.安装docker相关的 docker-ce 社区版 而ee是企业版
  24. yum install docker-ce docker-ce-cli containerd.io
  25. # 5、启动docker
  26. docker systemctl start docker
  27. # 6. 使用docker version查看是否按照成功
  28. docker version

docker详解:SpringCloud基础3——Docker_vincewm的博客-CSDN博客

配置阿里云镜像加速

因为docker hub是国外网站,需要配置国内镜像进行加速。

1、登录阿里云找到容器服务

image-20210913144618713

2、找到镜像加速器

image-20210913144658475

3、配置使用,输入到ssh回车

  1. sudo mkdir -p /etc/docker
  2. sudo tee /etc/docker/daemon.json <<-'EOF'
  3. {
  4. "registry-mirrors": ["https://2lxyghvy.mirror.aliyuncs.com"]
  5. }
  6. EOF
  7. sudo systemctl daemon-reload
  8. sudo systemctl restart docker

2.3. docker配置mysql、设置自启动

2.3.1、安装mysql5.7

  1. docker pull mysql:5.7.25
  2. # 运行容器
  3. sudo docker run -p 3306:3306 --name mysql01 \
  4. -v /mydata/mysql/log:/var/log/mysql \
  5. -v /mydata/mysql/data:/var/lib/mysql \
  6. -v /mydata/mysql/conf:/etc/mysql \
  7. -e MYSQL_ROOT_PASSWORD=1234 \
  8. -d mysql:5.7.25
  9. # 参数说明 -p 3312:3306 将容器的3306端口映射到主机的3312端口
  10. # -v 宿主机文件目录:容器内目录 将容器内文件挂载到宿主机上
  11. # -e MYSQL_ROOT_PASSWORD=root 设置mysql密码为root
  12. # -d 后台启动
  13. # --name 给启动容器起名字
  14. # 使用docker ps 查看启动的容器

2.3.2、修改mysql配置文件

  1. # 进入配置文件挂载的目录下
  2. cd /mydata/mysql/conf
  3. # 配置文件my.cnf
  4. vim my.cnf

主要修改编码为utf8

  1. # 新增配置文件内容
  2. [client]
  3. default-character-set=utf8
  4. [mysql]
  5. default-character-set=utf8
  6. [mysqld]
  7. init_connect='SET collation_connection = utf8_unicode_ci'
  8. init_connect='SET NAMES utf8'
  9. character-set-server=utf8
  10. collation-server=utf8_unicode_ci
  11. skip-character-set-client-handshake
  12. skip-name-resolve
  1. # 修改配置文件之后,重启容器
  2. docker restart mysql01

**设置自启动: **

  1. docker update mysql01 --restart=always

2.4. docker配置redis并设置持久化

如果直接挂载的话docker会以为挂载的是一个目录,所以我们先创建一个文件然后再挂载,在虚拟机中。

  1. # 1、创建配置文件
  2. mkdir -p /mydata/redis/conf
  3. touch /mydata/redis/conf/redis.conf
  1. # 2、下载镜像
  2. docker pull redis
  1. # 3、启动容器
  2. docker run -p 6379:6379 --name redis \
  3. -v /mydata/redis/data:/data \
  4. -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
  5. -d redis redis-server /etc/redis/redis.conf
  1. # 4、进入redis客户端
  2. docker exec -it redis redis-cli

修改redis配置文件

  1. vi /mydata/redis/conf/redis.conf

aof持久化方式、或设置密码,如果配置后无法打开redis,尝试删除注释

  1. appendonly yes
  2. #requirepass xxxxxx # 配置redis密码
  1. # 保存
  2. docker restart redis
  3. # 进入redis客户端
  4. docker exec -it redis redis-cli
  5. #auth xxxxxx #如果有设置密码

回顾aof和rdb持久化方式:

SpringCloud基础7——Redis分布式缓存_vincewm的博客-CSDN博客

设置redis容器在docker启动的时候启动

  1. docker update redis --restart=always

安装redis-desktop-manager-0.8.8.384并连接

image-20220920225956077

2.5. jdk、maven镜像、idea插件

首先安装jdk11、maven

  1. java -version
  2. mvn -version

maven3.6.1下载:

  1. https://maven.apache.org/download.cgi

image-20220920231806852

在/usr/local/ 下上传:

  1. cd /usr/local/

解压:

  1. tar -zxvf apache-maven-3.6.1-bin.tar.gz

配置maven的阿里云镜像、jdk11

  1. cd apache-maven-3.6.1 #进入apache-maven-3.6.1目录
  2. mkdir ck #创建ck目录
  3. cd conf # 进入conf目录
  4. vi settings.xm # settings.xm文件

修改对应标签:

  1. <mirrors>
  2. <mirror>
  3. <id>nexus-aliyun</id>
  4. <mirrorOf>central</mirrorOf>
  5. <name>Nexus aliyun</name>
  6. <url>http://maven.aliyun.com/nexus/content/groups/public</url>
  7. </mirror>
  8. </mirrors>
  9. <profiles>
  10. <id>jdk-11</id>
  11. <activation>
  12. <activeByDefault>true</activeByDefault>
  13. <jdk>11</jdk>
  14. </activation>
  15. <properties>
  16. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  17. <maven.compiler.source>11</maven.compiler.source>
  18. <maven.compiler.target>11</maven.compiler.target>
  19. <maven.compiler.compilerVersion>11</maven.compiler.compilerVersion>
  20. </properties>
  21. </profiles>

IDEA安装插件mybatisX。

2.6. vscode的安装、插件、配置

2.6.1、安装vscode和插件

下载地址Download Visual Studio Code - Mac, Linux, Windows

vscode用于前端管理系统,在vsCode里安装以下插件

  • Auto Close Tag
  • Auto Rename Tag
  • Chinese
  • ESlint
  • HTML CSS Support
  • HTML Snippets
  • JavaScript ES6
  • Live Server
  • open in brower
  • Vetur

2.6.2、关闭Eslink强检查

打开vue项目/build/webpack.base.conf.js,注释:

这样就能少去很多没必要的报错,例如.vue注释空格报错

2.6.3、 禁止运行项目后自动打开浏览器

vue项目运行命令npm run dev导致自动打开浏览器

**解决办法: **

1、在config文件夹找到index.js文件夹
2、把autoOpenBrowser: true
3、改为autoOpenBrowser: false

2.7. 初始化项目架构、创建仓库并提交GitHub

我项目初始化的时候,没有按照雷神用Spring Boot Initilizr。而是按照周阳在springcloud课程里面手动依赖管理的方式初始化的项目。

2.7.1、码云创建Maven仓库,git克隆父工程

码云创建Maven仓库

设置Maven开发模板;分支类型为“生产、开发模型” ,使开发分支时用dev分支,发布后使用master分支:

通过仓库地址克隆项目到本地:

ce7e1328c00724b13453e97c1090f395.png

7a7430b01e5050a123f0a67293a72c6e.png

2.7.2、新建子模块、

  • gulimall-xxx(product/order/ware/coupon/member)
  • 每一个子模块的包名为com.xmh.gulimall.xxx(product/order/ware/coupon/member)
  • 并在每个子模块下引入web、openfegin

新建maven模块 gulimall-xxx,导入依赖pom.xml

image-20220920234628151

image-20220920234537600

image-20220920234812094

image-20220920235516308

导入依赖

  1. <dependencies>
  2. <!--openfeign-->
  3. <dependency>
  4. <groupId>org.springframework.cloud</groupId>
  5. <artifactId>spring-cloud-starter-openfeign</artifactId>
  6. </dependency>
  7. <!--web-->
  8. <dependency>
  9. <groupId>org.springframework.boot</groupId>
  10. <artifactId>spring-boot-starter-web</artifactId>
  11. </dependency>
  12. <dependency>
  13. <groupId>org.springframework.boot</groupId>
  14. <artifactId>spring-boot-starter-actuator</artifactId>
  15. </dependency>
  16. </dependencies>

父工程的pom.xml,并把父工程添加到maven

image-20220921000230574

2.7.3、过滤上传git的垃圾文件

  • 点开父工程的.gitignore文件,添加如下内容
  1. **/mvnw
  2. **/mvnw.cmd
  3. **/.mvn
  4. **/target/
  5. .idea
  6. **/.gitignore

也可以直接把这些文件删除,这些文件是用不到的

2.7.4、右键项目提交

先右键项目-git-add,然后提交本地库image-20220921001104089

填写提交信息、点击commit

2.7.5、创建仓库并推送GitHub

image-20220921001227225

image-20220921001309235

2.8. 导入MySQL数据库表

注意:所有数据库表是没有外键的,商城项目外键复杂影响性能。

0.使用powerDesigner设计表:

1.创建数据库gulimall_oms,gulimall_pms,gulimall_sms,gulimall_ums,gulimall_wms,基字符集选择utf8mb4

2.使用Navicat或SQLyog分别创建五个数据库,编码utf8mb4。

3.双击打开数据库,新建查询,将sql语句复制粘贴运行:

随便点开一个表,发现没有中文乱码:

注意:不能将对应sql文件拉进点开的数据库自动运行sql语句,因为sql文件编码是gbk,直接拖进去会导致中文乱码

3、快速开发

3.1. “人人开源”,快速构建后台管理系统

3.1.1、克隆人人开源fast项目

码云上搜索人人开源,找到renren-fast(后台管理系统的后端),renren-fast-vue(后台管理系统的前端), 克隆到本地。

人人开源

image-20210913154307421

  • renren-fast是一个轻量级的,前后端分离的Java快速开发平台,能快速开发项目并交付
  • renren-fast-vue基于vue、element-ui构建开发,实现renren-fast后台管理前端功能,提供一套更优的前端解决方案
  • renren-security是一个轻量级的,前后端分离的Java快速开发平台,能快速开发项目并交付
  • renren-generator是人人开源项目的代码生成器,可在线生成基础增删改查相关的entity、xml、dao、service、html、js、sql代码,减少70%以上的开发任务,

克隆:

桌面右键git bash克隆两个项目:

  1. git clone https://gitee.com/renrenio/renren-fast.git
  2. git clone https://gitee.com/renrenio/renren-fast-vue.git

3.1.2、删掉两个文件夹里的.git文件夹

3.1.3、把renren-fast复制到子模块,并加入父工程

把后端renren-fast文件夹复制到谷粒商城项目中并加入父工程:

  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.vince.gulimall</groupId>
  6. <artifactId>gulimall</artifactId>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <name>gulimall</name>
  9. <description>聚合服务</description>
  10. <packaging>pom</packaging>
  11. <modules>
  12. <module>guli-coupon</module>
  13. <module>guli-member</module>
  14. <module>guli-order</module>
  15. <module>guli-product</module>
  16. <module>guli-ware</module>
  17. <module>renren-fast</module>
  18. </modules>
  19. </project>

然后在idea项目结构里设置项目jdk为11,把renren_fast的pom里jdk改为11:

3.1.4、renren-fast的pom修改

  • pom.xml报错
  1. 'parent.relativePath' of POM io.renren:renren-fast:3.0.0

报错原因:子模块的parent写的并不是子模块的上一级,而是继承了springboot

解决方法:将其他模块pom的parent复制粘贴到renren-fast的pom

  1. <parent>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-parent</artifactId>
  4. <version>2.7.3</version>
  5. <relativePath/> <!-- lookup parent from repository -->
  6. </parent>
  • 如果pom.xml之中的plugin地方报错,引入相关依赖
  1. <!-- https://mvnrepository.com/artifact/com.spotify/docker-maven-plugin -->
  2. <dependency>
  3. <groupId>com.spotify</groupId>
  4. <artifactId>docker-maven-plugin</artifactId>
  5. <version>0.4.14</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>org.codehaus.mojo</groupId>
  9. <artifactId>wagon-maven-plugin</artifactId>
  10. <version>1.0</version>
  11. </dependency>

3.1.5、创建后台管理系统的数据库gulimall_admin

sql文件在renren-fast/db/ 目录下,找到其中的mysql.sql 复制,运行。

3.1.6、修改renren-fast的配置文件,设置数据库

查看application.yml,发现当前环境为dev

image-20210913154552311

修改application-dev.yml, 配置成自己的linux的数据库信息,别忘了数据库名为gulimall_admin:

如果报错ssl错误,在url后面加&useSSL=false

3.1.7、启动和访问

  1. http://localhost:8080/renren-fast/

测试成功

3.1.8、node.js运行前端项目

**安装node.js **

下载地址https://nodejs.org/dist/v10.16.3/,下载之后直接安装即可。安装后检查node.js

image-20210919160508435

image-20210919160701333

配置淘宝镜像

  1. npm config set registry http://registry.npm.taobao.org/

设置node-sass版本:

  1. npm install node-sass@4.14

注意:一定要保证nodejs版本和node-sass匹配,不想浪费时间就下载我前面指定的版本。

加载项目依赖并运行项目:

运行vue项目之前,运行npm install命令,加载项目依赖

点击左下角打开控制台、点击终端 :

安装npm依赖

  1. npm install

运行项目

  1. npm run dev

报错解决:

如果npm install卡着不动,重启windows、管理员cmd窗口试试。

版本很重要,建议下载我前面的版本。

为什么运行命令是npm run dev?

在项目目录下,我们可以看到一个名为package.json的文件,该文件是对项目、模块包的描述,在package.json文件中,有一个scripts的字段:

  1. "scripts": {
  2. "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
  3. "start": "npm run dev",
  4. "build": "node build/build.js"
  5. },

修改后运行命令就是npm run serve:

  1. // 运行npm run serve的scripts字段
  2. "scripts": {
  3. "serve": "vue-cli-service serve",
  4. "build": "vue-cli-service build",
  5. "lint": "vue-cli-service lint"
  6. },

运行成功:

image-20210919161009246

访问http://localhost:8001,测试成功,账号密码是admin、admin。

报错解决:

如果不显示验证码是因为后台没有运行成功、检查idea是否数据库报错、检查虚拟机docker ps数据库是否运行。

另外centos默认会隔一两天自动改ip地址,想关闭参考下面文章的2.6:

Linux基础_vincewm的博客-CSDN博客_finalshell 进程查看

3.2. product模块的逆向工程搭建,人人开源代码生成器

3.2.1、克隆renren-generator

image-20210925221741281

  1. git clone https://gitee.com/renrenio/renren-generator.git

3.2.2、删除.git文件并导入到父工程中

**删除其中的.git文件,复制到父工程中,父工程pom.xml中添加代码生成器为子模块 **

3.2.**3、修改生成器模块的pom **

3.2.4、修改生成器模块配置文件的数据库信息

修改renren-generator的配置文件application.yml,配置自己的数据源,注意修改数据库名gulimall_pms(生成商品系统)

先生成gulimall-pms商品系统,就数据库名为商品系统的数据库表

  1. spring:
  2. datasource:
  3. type: com.alibaba.druid.pool.DruidDataSource
  4. #MySQL配置
  5. driverClassName: com.mysql.cj.jdbc.Driver
  6. url: jdbc:mysql://192.168.xxx.xxx:3306/gulimall_pms?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false
  7. username: root
  8. password: 1234

踩坑:ssl报错就在url后面加&useSSL=false、数据库连接出错检查虚拟机开机情况、数据库信息填写错误

3.2.5、修改生成信息generator.properties

这里先配置商品的相关信息:

注意只修改下面内容,其他内容不用变。

  1. #代码生成器,配置信息
  2. mainPath=com.vince
  3. #包名
  4. package=com.vince.gulimall
  5. moduleName=product
  6. #作者
  7. author=vince
  8. #Email
  9. email=xxxxx@qq.com
  10. #表前缀(类名不会包含表前缀)
  11. tablePrefix=pms_

如果引入spring-boot-starter-parent 2.2.6.RELEASE爆红,参考问题2

3.2.6、controller模板中去掉@RequiresPermissions注解

修改src/main/resources/template/Controller.java.vm

删除导入@RequiresPermissions注解的语句

image-20210925225909737

注释掉该位置,此处的注释是shiro提供的,我们以后要用spring security

**注意:这里注释要用//**,ctrl+/的注释是#。

3.2.7、运行项目并生成代码

访问localhost:80,选中所有表,生成代码

选择每页显示30条后,再全选生成

image-20210925222834846

注意:如果表备注里中文乱码,重写运行sql文件里的语句, 复制粘贴运行,因为sql文件编码是gbk

3.2.8、解压生成代码并复制到guli-product

解压生成的代码,把mian文件夹复制到guli-product/src下

删除前端代码:\resources\src\(前端文件,用不到)

如果之前没有创建application.yml和启动类,手动创建

3.2.9、新建common模块,解决生成代码报错问题

新建gulimall-common的Maven模块,用来引入每一个微服务公共的依赖、bean、工具类等

让所有gulimall-xxx的pom引用guli-common的依赖:

  1. <dependency>
  2. <groupId>com.vince.gulimall</groupId>
  3. <artifactId>gulimall-ware</artifactId>
  4. <version>0.0.1-SNAPSHOT</version>
  5. </dependency>

在gulimall-common引入公共依赖

  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.vince.gulimall</groupId>
  8. <version>0.0.1-SNAPSHOT</version>
  9. </parent>
  10. <modelVersion>4.0.0</modelVersion>
  11. <groupId>com.vince.gulimall</groupId>
  12. <artifactId>gulimall-common</artifactId>
  13. <version>0.0.1-SNAPSHOT</version>
  14. <!-- 统一管理jar包版本 -->
  15. <properties>
  16. <maven.compiler.source>11</maven.compiler.source>
  17. <maven.compiler.target>11</maven.compiler.target>
  18. <mybatis-plus.version>3.4.1</mybatis-plus.version>
  19. <lombok.version>1.18.8</lombok.version>
  20. <httpcore.version>4.4.14</httpcore.version>
  21. <commons.lang.version>2.6</commons.lang.version>
  22. <jakarta.validation.api>2.0.2</jakarta.validation.api>
  23. </properties>
  24. <dependencies>
  25. <dependency>
  26. <groupId>com.baomidou</groupId>
  27. <artifactId>mybatis-plus-boot-starter</artifactId>
  28. <version>${mybatis-plus.version}</version>
  29. </dependency>
  30. <dependency>
  31. <groupId>org.projectlombok</groupId>
  32. <artifactId>lombok</artifactId>
  33. <version>${lombok.version}</version>
  34. </dependency>
  35. <dependency>
  36. <groupId>org.apache.httpcomponents</groupId>
  37. <artifactId>httpcore</artifactId>
  38. <version>${httpcore.version}</version>
  39. </dependency>
  40. <dependency>
  41. <groupId>commons-lang</groupId>
  42. <artifactId>commons-lang</artifactId>
  43. <version>${commons.lang.version}</version>
  44. </dependency>
  45. <dependency>
  46. <groupId>jakarta.validation</groupId>
  47. <artifactId>jakarta.validation-api</artifactId>
  48. <version>${jakarta.validation.api}</version>
  49. <scope>compile</scope>
  50. </dependency>
  51. <dependency>
  52. <groupId>javax.servlet</groupId>
  53. <artifactId>servlet-api</artifactId>
  54. <version>2.5</version>
  55. <scope>provided</scope>
  56. </dependency>
  57. <dependency>
  58. <groupId>mysql</groupId>
  59. <artifactId>mysql-connector-java</artifactId>
  60. <version>8.0.28</version>
  61. </dependency>
  62. <dependency>
  63. <groupId>com.alibaba.cloud</groupId>
  64. <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  65. </dependency>
  66. <dependency>
  67. <groupId>com.alibaba.cloud</groupId>
  68. <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
  69. </dependency>
  70. </dependencies>
  71. <dependencyManagement>
  72. <dependencies>
  73. <dependency>
  74. <groupId>com.alibaba.cloud</groupId>
  75. <artifactId>spring-cloud-alibaba-dependencies</artifactId>
  76. <version>2021.0.1.0</version>
  77. <type>pom</type>
  78. <scope>import</scope>
  79. </dependency>
  80. </dependencies>
  81. </dependencyManagement>
  82. </project>

注意SpringCloud和springboot和版本兼容问题,不匹配就是给后面埋雷,建议用老师的版本或我的版本。我这里版本都是最新的,springboot版本2.7.4,SpringCloud版本2021.0.4,SpringCloudAlibaba版本2021.0.1.0

Release TrainBoot Version2021.0.x aka Jubilee2.6.x, 2.7.x (Starting with 2021.0.3)2020.0.x aka Ilford2.4.x, 2.5.x (Starting with 2020.0.3)Hoxton2.2.x, 2.3.x (Starting with SR5)Greenwich2.1.xFinchley2.0.xEdgware1.5.xDalston1.5.xSpring Cloud Alibaba VersionSpring Cloud VersionSpring Boot Version2021.0.4.0*Spring Cloud 2021.0.42.6.112021.0.1.0Spring Cloud 2021.0.12.6.32021.1Spring Cloud 2020.0.12.4.2

从renren-fast模块的common包下,复制粘贴这些包和类:

然后把引入上面这些类的报错文件中,重新导入,例如:

  1. import io.renren.common.xss.SQLFilter;

改成

  1. import com.vince.common.xss.SQLFilter;

如果第六步没有删除在controller模板中删除@RequiresPermissions注解:

ctrl+x删除gulimall-product里所有controller中的@RequiresPermissions注解

  1. import org.apache.shiro.authz.annotation.RequiresPermissions;
  2. @RequiresPermissions("product:attr:list")

现在所有报错都已经清理完毕。

如果之前注释了controller模板(在renren-generator的resources-template-Controller.java.vm里)里的@RequiresPermissions注解,这里就不用删除了。

3.2.10、结果类R使用方式

上面解决报错问题后,common模块的utils包下有个结果类R:

  1. public class R extends HashMap<String, Object> {
  2. private static final long serialVersionUID = 1L;
  3. public R() {
  4. put("code", 0);
  5. put("msg", "success");
  6. }
  7. public static R error() {
  8. return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, "未知异常,请联系管理员");
  9. }
  10. public static R error(String msg) {
  11. return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, msg);
  12. }
  13. public static R error(int code, String msg) {
  14. R r = new R();
  15. r.put("code", code);
  16. r.put("msg", msg);
  17. return r;
  18. }
  19. public static R ok(String msg) {
  20. R r = new R();
  21. r.put("msg", msg);
  22. return r;
  23. }
  24. public static R ok(Map<String, Object> map) {
  25. R r = new R();
  26. r.putAll(map);
  27. return r;
  28. }
  29. public static R ok() {
  30. return new R();
  31. }
  32. public R put(String key, Object value) {
  33. super.put(key, value);
  34. return this;
  35. }
  36. }

controller使用方法:

返回成功数据:

  1. return R.ok().put("data", (Object)"响应的数据");

返回错误数据:

  1. return R.error(500,"错误消息,在msg里").put("data",(Object)"错误数据,在data里,常为List<String>,存多个错误原因");

3.2.11、配置yml和添加mysql依赖,测试CRUD

common模块的pom.xml加入依赖:

  1. <dependency>
  2. <groupId>mysql</groupId>
  3. <artifactId>mysql-connector-java</artifactId>
  4. <version>8.0.28</version>
  5. </dependency>

product模块的****application.yml

  1. server:
  2. port: 10000
  3. spring:
  4. datasource:
  5. username: root
  6. password: 1234
  7. url: jdbc:mysql://xxxx:3306/gulimall_pms?userUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
  8. driver-class-name: com.mysql.jdbc.Driver
  9. mybatis-plus:
  10. configuration:
  11. #数据库下划线和实体类驼峰统一
  12. map-underscore-to-camel-case: true
  13. log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  14. global-config:
  15. db-config:
  16. id-type: auto
  17. banner: false
  18. #告诉mp,sql映射文件的位置,默认值classpath*:/mapper/**/*.xml。
  19. # classpath表示只引用现在模块的类路径。lasspath*表示不止引用现在模块的类路径,还包括依赖jar包的类路径
  20. mapper-locations: classpath:/mapper/**/*.xml

3、测试

  • 新建测试类

image-20210925230146780

3.3 其他模块的逆向工程搭建,人人开源

3.3.6、各模块创建yml,设置端口号

按照字母序从上往下配置,coupon是7000,member是8000,order是9000,product是10000,ware是11000。

3.3.1、修改生成器properties和yml,生成coupon模块代码

**修改生成器配置,模块名和表前缀: **

image-20210925230552465

  1. #代码生成器,配置信息
  2. mainPath=com.vince
  3. #包名
  4. package=com.vince.gulimall
  5. moduleName=coupon
  6. #作者
  7. author=vince
  8. #Email
  9. email=xxx@qq.com
  10. #表前缀(类名不会包含表前缀)
  11. tablePrefix=sms_

**修改yml的数据库名 **

image-20210925230636295

运行生成器模块,访问http://localhost/

每页显示100条、全选生成:

3.3.2、复制粘贴生成代码,引入common模块依赖

生成coupon的代码,main文件夹复制到工程中,并在gulimall-coupon工程中引入gulimall-common依赖

  1. <dependency>
  2. <groupId>com.vince.gulimall</groupId>
  3. <artifactId>gulimall-common</artifactId>
  4. <version>0.0.1-SNAPSHOT</version>
  5. </dependency>

3.3.3、创建yml,删除resources的src文件夹

从product复制过去,只需要修改数据库名字。

  1. server:
  2. port: 7000
  3. spring:
  4. datasource:
  5. username: root
  6. password: 1234
  7. url: jdbc:mysql://xxxx.134:3306/gulimall_sms?userUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
  8. driver-class-name: com.mysql.jdbc.Driver
  9. mybatis-plus:
  10. configuration:
  11. #数据库下划线和实体类驼峰统一
  12. map-underscore-to-camel-case: true
  13. log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  14. global-config:
  15. db-config:
  16. id-type: auto
  17. banner: false
  18. #告诉mp,sql映射文件的位置,默认值classpath*:/mapper/**/*.xml。
  19. # classpath表示只引用现在模块的类路径。lasspath*表示不止引用现在模块的类路径,还包括依赖jar包的类路径
  20. mapper-locations: classpath:/mapper/**/*.xml

删除resources下的src

3.3.4、运行测试

访问http://localhost:7000/coupon/coupon/list**测试**

测试成功!

3.3.5、同方法生成gulimall-member/gulimall-order/gulimall-ware的代码

生成:

修改generator.properties的模块名和表前缀(ums_,oms_,wms_)、yml数据库名、运行生成器模块,访问http://localhost/

每页显示100条、全选生成。

配置生成后的模块:

复制粘贴生成代码,pom引入common模块依赖、yml修改数据库名、删除resources下的src

ware模块多一条,删除这三个实体类和对应的dao、service、controller、resources.mapper.ware

**测试: **

测试member、ums:http://localhost:8000/member/growthchangehistory/list

测试order、oms:http://localhost:9000/order/order/list

测试ware、wms: http://localhost:11000/ware/wareinfo/list


本文转载自: https://blog.csdn.net/qq_40991313/article/details/126979275
版权归原作者 vincewm 所有, 如有侵权,请联系我们删除。

“谷粒商城笔记+踩坑(1)——架构、项目环境搭建、代码生成器”的评论:

还没有评论