使用 renren-fastrenren-fast-vue 搭建前后端项目,并且联调通过。使用renren-generator生成微服务系统基本的增删改查代码。

1. 下载代码生成器

将renren-generator克隆到本地。

2. 将renren-generator导入到项目中

  1. 删除renren-generator中的.git仓库管理工具

  2. 想文件夹放到gulimall根目录下

  3. 将代码生成器放在module中

  4. 修改配置文件application.yml,配置对应需要逆向生成的数据库

  5. 修改配置文件generator.properties

    这里配置文件如果中文乱码,可以打开设置,搜索encoding,将图中所有敌方改为utf8。

    修改配置

3. 启动项目生成代码

在http://localhost/#generator.html全选后生成代码。

生成压缩包解压后,为main文件夹加一堆sql。将main文件夹复制到对应目录,代替原有main文件夹。

  1. 查看生成后目录,views文件夹为前端代码,可以进行删除

  2. 生成的代码中有很多引用的缺失

4. 解决引用缺失问题

  1. 新建模块gulimall-common,存放所有微服务所需依赖


  2. 将每一个微服务的依赖都放到common中,然后每个微服务依赖common即可

  3. 在微服务中引入对common的依赖

  4. gulimall-common中添加依赖

    1. dao层:使用mybatis-plus

      <!--dao层:mybatis-plus-->
      <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.2.0</version>
      </dependency>
      
    2. 引入lombok依赖,可以简化JavaBean开发,不再写getter、setter方法

      <!--lombok:简化JavaBean开发,使用后可以不再写getter和setter方法-->
      <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.8</version>
      </dependency>
      
    3. 引入工具类依赖

      • gulimall-common的Java目录下新建包com.atguigu.common.utils

      • 将所需以来包复制到utils文件夹中

    4. 导入工具类中所依赖包

      • 引入httpcore依赖,使用Java发送http请求(R工具类依赖)

        <!--httpcore:使用Java发送http请求-->
        <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpcore</artifactId><version>4.4.12</version>
        </dependency>
        
      • 引入commons-lang依赖

        <!--commons-lang-->
        <dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>2.6</version>
        </dependency>
        
      • 引入servlet-api依赖

        <!--引入servlet-api依赖-->
        <dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version><scope>provided</scope>
        </dependency>
        
      • 引入import io.renren.common.xss.SQLFilter;

        1. xss文件夹放到gulimall-common对应目录下

          删除XssFilterXssHttpServletRequestWrapper

        2. Query中重新引入

    5. 引入异常工具类RRException解决SQLFilter中的异常依赖错误

    6. 引入常量文件以来Constant

  5. 调整逆向工程,在生成controller时候,不使用RequiresPermissions注解

    renren-generator的模板文件夹中,将controller模板中所有RequiresPermissions注解全部暂时注释掉。并删除import org.apache.shiro.authz.annotation.RequiresPermissions;引用

5. 重启逆向工程

  1. 重新生成所有表的代码

  2. 将新生成的controller复制到项目中。只需要重新复制controller即可,因为只更改了controller模板。新生成的controller中就没有注解了。

6. 整合MyBatis-plus

  1. 导入依赖mybatis-plus-boot-starter

  2. 配置

    • 配置数据源

      • 导入数据库驱动

        由于所有微服务可能都需要使用驱动,直接将驱动写在gulimall-common

        1. 查看数据库版本

        2. 在Maven仓库搜索mysql connector

        3. 在仓库中没有对应5.7.×版本

          官方解释:

        4. 因此使用8.0.×版本即可,选择8.0.17,导入依赖

          <!--导入MySQL驱动-->
          <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.17</version>
          </dependency>
          
      • 在application.yml配置数据源相关信息

        gulimall-product目录下的resources资源文件夹中,新建application.yml并填写一下配置

        spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://192.168.56.10:3306/gulimall_pms?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghaiusername: rootpassword: root
        

    • 配置MyBatis-plus

      • 使用@MapperScan注解,确定Mapper位置

      • 告诉MyBatis-plus,每一个Mapper文件的SQL映射文件(复杂SQL可以在映射文件中进行书写)。

        在application.yml中补充如下配置

        mybatis-plus:mapper-locations: classpath:/mapper/**/*.xml
        

      • 设置主键自增

        在application.yml中补充如下配置

        mybatis-plus:global-config:db-config:id-type: auto
        

7. 测试

在test文件夹下进行单元测试,均可成功运行

package com.atguigu.gulimall.product;import com.atguigu.gulimall.product.entity.BrandEntity;
import com.atguigu.gulimall.product.service.BrandService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import java.util.List;@SpringBootTest
class GulimallProductApplicationTests {@AutowiredBrandService brandService;@Testvoid testInsert() {BrandEntity brandEntity = new BrandEntity();brandEntity.setName("华为");brandService.save(brandEntity);System.out.println("保存成功");}@Testvoid testUpdate() {BrandEntity brandEntity = new BrandEntity();brandEntity.setBrandId(1L);brandEntity.setDescript("华为品牌");brandService.updateById(brandEntity);}@Testvoid testSelect() {List<BrandEntity> list = brandService.list(new QueryWrapper<BrandEntity>().eq("brand_id", 1L));list.forEach(item -> System.out.println(item));}
}

8. 为其他微服务生成相关代码

  1. 修改代码生成器配置文件

  2. 修改连接数据库

  3. 启动工程,访问80端口,生成全部代码

  4. 将生成代码中main文件夹中代码全部放到gulimall-coupon项目中

  5. 删除src视图views目录

  6. 配置gulimall-coupon依赖gulimall-common

     <dependency><groupId>com.atguigu.gulimall</groupId><artifactId>gulimall-common</artifactId><version>0.0.1-SNAPSHOT</version></dependency>
    

  7. 配置gulimall-coupon数据源以及mybatis

    spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://192.168.56.10:3306/gulimall_sms?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghaiusername: rootpassword: root
    mybatis-plus:mapper-locations: classpath:/mapper/**/*.xmlglobal-config:db-config:id-type: auto
    

  8. 其他系统流程相同

9. 指定每个微服务端口号

在每个微服务src/main/resources/application.yml中配置不同端口号

依次递增1000

谷粒商城:04. 逆向工程完善微服务系统相关推荐

  1. tcpdump如何判断丢包_亿级规模的高可用微服务系统,如何轻松设计?

    " 说到大规模微服务系统,往往是一些 7*24 时不间断运行的在线系统.那么如何设计一个大规模的微服务系统呢? 图片来自 Pexels 这样的系统往往有以下的要求: 高可用.这类的系统往往需 ...

  2. 一个完整的微服务系统,应该包含哪些功能?--转

    原文地址:http://chuansong.me/n/405417651660 近几年,微服务架构迅速在整个技术社区窜红,它被认为是IT软件架构的未来方向,大神Martin Fowler也给微服务极高 ...

  3. 基于 Spring Security OAuth2和 JWT 构建保护微服务系统

    我们希望自己的微服务能够在用户登录之后才可以访问,而单独给每个微服务单独做用户权限模块就显得很弱了,从复用角度来说是需要重构的,从功能角度来说,也是欠缺的.尤其是前后端完全分离之后,我们的用户信息不一 ...

  4. 使用 Spring Cloud 实现微服务系统

    使用 Spring Cloud 实现微服务系统 准备工作: 为了方便创建项目,以及各版本以来关系,此次创建项目使用 Spring Assistant插件. 创建单体服务中心项目 启用服务端的服务注册, ...

  5. 《深入理解 Spring Cloud 与微服务构建》第十八章 使用 Spring Security OAuth2 和 JWT 保护微服务系统

    <深入理解 Spring Cloud 与微服务构建>第十八章 使用 Spring Security OAuth2 和 JWT 保护微服务系统 文章目录 <深入理解 Spring Cl ...

  6. 《深入理解 Spring Cloud 与微服务构建》第十七章 使用 Spring Cloud OAuth2 保护微服务系统

    <深入理解 Spring Cloud 与微服务构建>第十七章 使用 Spring Cloud OAuth2 保护微服务系统 文章目录 <深入理解 Spring Cloud 与微服务构 ...

  7. SpringBoot搭建天气预报微服务系统

    SpringBoot搭建天气预报微服务系统 前言 本系列文章将简单的学习SpringCloud微服务相关知识,其实也是因为时间的原因,一直拖到现在,遂打算趁着假期,决定记录下来. 从天气预报微服务系统 ...

  8. 完整的微服务系统应该包括哪些功能?

    通常而言,微服务架构是一种架构模式或者说是一种架构风格.它提倡将单一应用程序划分成一组小的服务,每个服务运行独立的自己的进程中,服务之间互相协调.互相配合,为用户提供最终价值. 服务之间采用轻量级的通 ...

  9. 微服务系统的层次结构

    1.介绍 将一个复杂的系统分成几个相对独立的且相互协调的微服务来开发.部署.运维.维护,相对于单体式应用有着巨大的优势,但如果层次划分不清,无序访问数据,不但不会发挥这些优势,反而让系统更加复杂 2. ...

  10. 微服务系统中的数据一致性,你都会了吗

    你好,我是看山. 从单体架构到分布式架构,从巨石架构到微服务架构.系统之间的交互越来越复杂,系统间的数据交互量级也是指数级增长.作为一个系统,我们要保证逻辑的自洽和数据的自洽. 数据自洽有两方面要求: ...

最新文章

  1. NFS挂载的问题svc: failed to register lockdv1 RPC service
  2. LeetCode Set Matrix Zeroes
  3. Nest Secure智能保全系统内建麦克风 引发用户反弹
  4. 好想学python怎么玩_Python 应该怎么学?
  5. 云笔记/笔记软件工具
  6. vue之watch用法
  7. 原生JavaScript + Canvas实现图片局部放大器
  8. 拼多多|后端开发工程师|一面| 远程牛客面试 | 凉经 (2021/08/14)
  9. 桌面计算机休眠快捷键,电脑休眠快捷键是什么
  10. TIA博途中通过PN耦合器实现不同网段的PLC进行PROFINET通信的具体方法
  11. 葵花宝典:软件开发高手是这样炼成的![转]
  12. 大数据还能火多久?现在学习还来得及吗?
  13. https安全证书过期失效的原因以及解决方法
  14. 两直线平行交叉相乘_高中数学知识点:向量平行公式和垂直公式
  15. SpringBoot重启后,第一次请求接口请求慢的解决方案
  16. SuperMap iDesktop .NET 9D(2019)产品白皮书
  17. qrc文件的使用方法
  18. 个人训练赛第二十场:对撞
  19. 万亿流量转发引擎BFE开源,技术派百度再次秀肌肉
  20. 老罗前辈的总结:那两年炼就的Android内功修养

热门文章

  1. 7.jenkins 发布邮件
  2. 23. Yii 组件事件
  3. js 如何判断数组元素是否存在重复项
  4. 深入理解Java虚拟机 学习总结
  5. =、:=、?=、+=
  6. python selenium 打开新窗口
  7. CentOS 7下安装QT5.8
  8. 《Advanced .NET Debugging》 读书笔记 Listing 5-6: Pining的简单示例
  9. 在.net平台下,执行命令行
  10. [C#][SAMPLE][CODE][Control]RadioBox、CheckBox和Validating事件的相关处理