若依微服务版怎样新增业务子模块并使用代码生成实现对表的增删改查

小灰灰 2023-10-05 13:13 104阅读 0赞

场景

若依微服务版手把手教你本地搭建环境并运行前后端项目:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/109363303

在前面已经将若依微服务版的项目在本地搭建起来之后,怎样开发具体的业务。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JBREFPX0xJVU1BTkdfUUlaSEk_size_16_color_FFFFFF_t_70

搭建好之后的项目结构里,ruoyi-modules是存放业务模块的位置。

ruoyi-fzys就是新增的业务。

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

新增业务模块并配置

按照项目的结构设计,业务模块的位置是在ruoyi-modules下,所以在此模块上右键-new-Module

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JBREFPX0xJVU1BTkdfUUlaSEk_size_16_color_FFFFFF_t_70 1

点击确定后

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JBREFPX0xJVU1BTkdfUUlaSEk_size_16_color_FFFFFF_t_70 2

然后点击next

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JBREFPX0xJVU1BTkdfUUlaSEk_size_16_color_FFFFFF_t_70 3

为了和之前的模块统一风格的命名方式,所以这里新建的module的坐标是ruoyi-fzyscontrol,然后点击next

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JBREFPX0xJVU1BTkdfUUlaSEk_size_16_color_FFFFFF_t_70 4

包括module的名字的命名风格,统一以ruoyi-modules-业务模块名的格式。

新增完模块之后,此业务模块就是上面ruoyi-modules的子模块,可以打开ruoyi-modules的pom.xml

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JBREFPX0xJVU1BTkdfUUlaSEk_size_16_color_FFFFFF_t_70 5

可以看到已经自动将新增的业务模块添加到此业务模块下了

然后打开ruoyi-modules-system的系统模块的pom.xml,将其dependencies下和build下的代码复制到上面新建业务模块的pom.xml文件中

当前是如下代码,具体根据自己版本的pom文件去复制

  1. <dependencies>
  2. <!-- SpringCloud Ailibaba Nacos -->
  3. <dependency>
  4. <groupId>com.alibaba.cloud</groupId>
  5. <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  6. </dependency>
  7. <!-- SpringCloud Ailibaba Nacos Config -->
  8. <dependency>
  9. <groupId>com.alibaba.cloud</groupId>
  10. <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
  11. </dependency>
  12. <!-- SpringCloud Ailibaba Sentinel -->
  13. <dependency>
  14. <groupId>com.alibaba.cloud</groupId>
  15. <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
  16. </dependency>
  17. <!-- SpringBoot Actuator -->
  18. <dependency>
  19. <groupId>org.springframework.boot</groupId>
  20. <artifactId>spring-boot-starter-actuator</artifactId>
  21. </dependency>
  22. <!-- Swagger -->
  23. <dependency>
  24. <groupId>io.springfox</groupId>
  25. <artifactId>springfox-swagger-ui</artifactId>
  26. <version>${swagger.fox.version}</version>
  27. </dependency>
  28. <!-- Mysql Connector -->
  29. <dependency>
  30. <groupId>mysql</groupId>
  31. <artifactId>mysql-connector-java</artifactId>
  32. </dependency>
  33. <!-- Ruoyi Common Security -->
  34. <dependency>
  35. <groupId>com.ruoyi</groupId>
  36. <artifactId>ruoyi-common-security</artifactId>
  37. </dependency>
  38. <!-- Ruoyi Common Datascope -->
  39. <dependency>
  40. <groupId>com.ruoyi</groupId>
  41. <artifactId>ruoyi-common-datascope</artifactId>
  42. </dependency>
  43. <!-- Ruoyi Common Log -->
  44. <dependency>
  45. <groupId>com.ruoyi</groupId>
  46. <artifactId>ruoyi-common-log</artifactId>
  47. </dependency>
  48. <!-- Ruoyi Common Swagger -->
  49. <dependency>
  50. <groupId>com.ruoyi</groupId>
  51. <artifactId>ruoyi-common-swagger</artifactId>
  52. </dependency>
  53. <!-- RuoYi Common Redis-->
  54. <dependency>
  55. <groupId>com.ruoyi</groupId>
  56. <artifactId>ruoyi-common-redis</artifactId>
  57. </dependency>
  58. </dependencies>
  59. <build>
  60. <plugins>
  61. <plugin>
  62. <groupId>org.springframework.boot</groupId>
  63. <artifactId>spring-boot-maven-plugin</artifactId>
  64. <executions>
  65. <execution>
  66. <goals>
  67. <goal>repackage</goal>
  68. </goals>
  69. </execution>
  70. </executions>
  71. </plugin>
  72. </plugins>
  73. </build>

然后在新建模块下新建包com.ruoyi.fzyscontrol

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JBREFPX0xJVU1BTkdfUUlaSEk_size_16_color_FFFFFF_t_70 6

然后将前面system模块的启动类复制到新建业务的包下并更改名字

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JBREFPX0xJVU1BTkdfUUlaSEk_size_16_color_FFFFFF_t_70 7

更改启动类里面的类名和要启动的类名以及启动成功的输出内容。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JBREFPX0xJVU1BTkdfUUlaSEk_size_16_color_FFFFFF_t_70 8

然后将system的yml配置文件复制到新建模块一份,并修改该模块的端口号,这里是9205,以及应用名称

示例代码如下

  1. # Tomcat
  2. server:
  3. port: 9205
  4. # Spring
  5. spring:
  6. application:
  7. # 应用名称
  8. name: ruoyi-fzyscontrol
  9. profiles:
  10. # 环境配置
  11. active: dev
  12. cloud:
  13. nacos:
  14. discovery:
  15. # 服务注册地址
  16. server-addr: 10.61.37.60:8848
  17. config:
  18. # 配置中心地址
  19. server-addr: 10.61.37.60:8848
  20. # 配置文件格式
  21. file-extension: yml
  22. # 共享配置
  23. shared-dataids: application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

然后登录Nacos配置中心,找到配置列表,选择ruoyi-system-dev.yml,点击克隆,并更改Data Id 为ruoyi-fzyscontrol-dev.yml

点击开始克隆

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JBREFPX0xJVU1BTkdfUUlaSEk_size_16_color_FFFFFF_t_70 9

然后再选中新克隆的配置文件,点击编辑,将搜索的指定包名的路径改为com.ruoyi.fzyscontrol,这里的包名要与后面生成代码时相对应

注意下面的配置mapper的扫描,找到所有mapper.xml映射文件的地方

这里的路径是在配置的在resources下的mapper目录下的任意子目录下的任意.xml文件

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JBREFPX0xJVU1BTkdfUUlaSEk_size_16_color_FFFFFF_t_70 10

示例代码如下

  1. # Spring
  2. spring:
  3. redis:
  4. host: *****
  5. port: *****
  6. password: ******
  7. datasource:
  8. driver-class-name: com.mysql.cj.jdbc.Driver
  9. url:jdbc:mysql://*******:3306/fzys?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
  10. username: root
  11. password: 1234
  12. # Mybatis配置
  13. mybatis:
  14. # 搜索指定包别名
  15. typeAliasesPackage: com.ruoyi.fzyscontrol
  16. # 配置mapper的扫描,找到所有的mapper.xml映射文件
  17. mapperLocations: classpath:mapper/**/*.xml
  18. # swagger 配置
  19. swagger:
  20. title: 系统模块接口文档
  21. license: Powered By ruoyi
  22. licenseUrl: https://ruoyi.vip
  23. authorization:
  24. name: RuoYi OAuth
  25. auth-regex: ^.*$
  26. authorization-scope-list:
  27. - scope: server
  28. description: 客户端授权范围
  29. token-url-list:
  30. - http://localhost:8080/auth/oauth/token

注意将redis和mysql的连接改为自己的。

然后再找到ruoyi-gateway-dev.yml网管的配置文件,点击编辑

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JBREFPX0xJVU1BTkdfUUlaSEk_size_16_color_FFFFFF_t_70 11

仿照上面system的配置复制出来一份,并修改为新模块所对应的。

system的配置

  1. # 系统模块
  2. - id: ruoyi-system
  3. uri: lb://ruoyi-system
  4. predicates:
  5. - Path=/system/**
  6. filters:
  7. - StripPrefix=1

新建业务的配置

  1. # fzys控制模块
  2. - id: ruoyi-fzyscontrol
  3. uri: lb://ruoyi-fzyscontrol
  4. predicates:
  5. - Path=/fzyscontrol/**
  6. filters:
  7. - StripPrefix=1

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JBREFPX0xJVU1BTkdfUUlaSEk_size_16_color_FFFFFF_t_70 12

更改完之后点击发布。

启动项目并生成代码

依次找到ruoyi-gateway、ruoyi-auth、ruoyi-system、ruoyi-gen下的启动类去启动,注意启动顺序。

网管模块和认证模块要在系统模块和代码生成模块之前。

然后再启动刚才新建的业务模块,此时一个启动五个模块。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JBREFPX0xJVU1BTkdfUUlaSEk_size_16_color_FFFFFF_t_70 13

此时可以去Nacos服务注册中心的服务列表查看,回看到此时会有五个服务。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JBREFPX0xJVU1BTkdfUUlaSEk_size_16_color_FFFFFF_t_70 14

此时就可以打开此项目连接的数据库进行设计业务表,这里设计一个表

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JBREFPX0xJVU1BTkdfUUlaSEk_size_16_color_FFFFFF_t_70 15

然后打开前端项目ruoyi-ui

在终端中输入

  1. npm install

安装前端项目依赖

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JBREFPX0xJVU1BTkdfUUlaSEk_size_16_color_FFFFFF_t_70 16

安装项目依赖成功之后找到项目的vue.config.js

修改前端项目的端口,默认是80,这里修改为90,

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JBREFPX0xJVU1BTkdfUUlaSEk_size_16_color_FFFFFF_t_70 17

然后修改代理的后端的请求地址,这里要与上面后台网关模块中yml配置文件中配置的网关模块相对应

默认网关是8080,这里为了避免端口冲突改为8888

所以这里前端的代理地址的端口也是8888

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JBREFPX0xJVU1BTkdfUUlaSEk_size_16_color_FFFFFF_t_70 18

启动前端项目

  1. npm run dev

启动后打开浏览器访问

http://localhost:90/

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JBREFPX0xJVU1BTkdfUUlaSEk_size_16_color_FFFFFF_t_70 19

登录成功后找到系统工具-代码生成-导入,选择前面新建的数据库中的表,导入之后,选择并编辑

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JBREFPX0xJVU1BTkdfUUlaSEk_size_16_color_FFFFFF_t_70 20

这里修改生成代码时的生成信息,注意这里的包名要与上面配置mapper扫描包的路径一致,并且这里还加了具体业务的包。

这个功能是信号灯控制功能,最终是属于运行调度管理菜单下的功能,所以这里配置的包路径追加了一层运行调度管理,

生成的模块名也叫运行调度管理,但是生成的业务名是其下具体的信号灯控制。

然后点击提交后点击生成,会将生成代码的压缩包下载到本地,解压之后的目录

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JBREFPX0xJVU1BTkdfUUlaSEk_size_16_color_FFFFFF_t_70 21

来到项目中新建模块的包下将后端代码复制到相应的位置

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JBREFPX0xJVU1BTkdfUUlaSEk_size_16_color_FFFFFF_t_70 22

注意这里的复制后的代码的路径要和你在Nacos中配置文件的配置一致。

然后打开ruoyi-ui前端代码,将生成的vue目录下的前端代码复制到相应的api和views下

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JBREFPX0xJVU1BTkdfUUlaSEk_size_16_color_FFFFFF_t_70 23

注意这里的路径,要与vue中调用js方法的路径以及菜单按钮路径中调用vue页面的路径一致。

然后连接到数据库,运行代码生成时的sql文件,将菜单项插入到菜单表中

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JBREFPX0xJVU1BTkdfUUlaSEk_size_16_color_FFFFFF_t_70 24

此时会在菜单表中生成具体的菜单

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JBREFPX0xJVU1BTkdfUUlaSEk_size_16_color_FFFFFF_t_70 25

前后端联调

因为生成的代码可能会有路径或者url等不对应的问题,所以要实现前后端的联调还需要进行调整。

打开前端代码的js文件的请求后台的url路径为

/runcontrolmange/signallightcontrol/list

然后打开后端controller中具体方法

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JBREFPX0xJVU1BTkdfUUlaSEk_size_16_color_FFFFFF_t_70 26

如果这里的controller的路径不对应的话进行修改。

此时路径还是不能匹配。因为之前在Nacos的配置中心配置网关时设置了请求时的前缀

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JBREFPX0xJVU1BTkdfUUlaSEk_size_16_color_FFFFFF_t_70 27

所以在请求具体的服务时,前端必须在对应后台Controller的基础上,添加一个网关管理的服务的前缀。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JBREFPX0xJVU1BTkdfUUlaSEk_size_16_color_FFFFFF_t_70 28

所以在前端项目中进行请求的js的url中要根据具体请求的服务添加请求前缀

此时访问具体的菜单即可获取到服务

发表评论

表情:
评论列表 (有 0 条评论,104人围观)

还没有评论,来说两句吧...

相关阅读