若依管理系统RuoYi-Vue (三):代码⽣成器原理和实战

若依管理系统RuoYi-Vue (三):代码⽣成器原理和实战

历史⽂章

本篇⽂章将会讲解ruoyi-vue 系统下代码⽣成器的使⽤、原理分析以及将这部分代码抽离出来形成独⽴版的代码⽣成器。


⼀、代码⽣成器的使⽤


1.新建maven 模块

原则上,我们的业务代码和若依系统本⾝的系统代码是要做隔离的,⼀⽅⾯是易于之后随着若依系统升级⽽升级,另⼀⽅⾯则是纯粹的合理性考虑。这⾥新建⼀个ruoyi-business 模块作为业务代码模块,新建完ruoyi-business 模块之后添加ruoyi-framework 依赖,pom ⽂件如下所⽰

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<parent>

<artifactId>ruoyi</artifactId>

<groupId>com.ruoyi</groupId>

<version>3.4.0</version>

</parent>

<modelVersion>4.0.0</modelVersion>

<groupId>com.kdyzm</groupId>

<artifactId>ruoyi-business</artifactId>

<version>1.0.0-SNAPSHOT</version>

<dependencies><!-- 核⼼模块-->

<dependency>

<groupId>com.ruoyi</groupId>

<artifactId>ruoyi-framework</artifactId>

</dependency>

</dependencies>

</project>


之后在ruoyi-admin 添加ruoyi-business 模块的依赖


<dependency>

<groupId>com.kdyzm</groupId>

<artifactId>ruoyi-business</artifactId>

<version>1.0.0-SNAPSHOT</version>

</dependency>


2.准备代码⽣成器配置

ruoyi-vue 系统中代码⽣成器相代码都在ruoyi-generator 模块中,代码⽣成的配置在resources/generator.yml ⽂件中,由于要在新的模块ruoyi-business 中做开发,要有个新包名,包名取作com.kdyzm.business ,所以generator.yml 配置⽂件内容如下:

# 代码⽣成gen:

# 作者

author: kdyzm

# 默认⽣成包路径 system 需改成⾃⼰的模块名称 如 system monitor tool

packageName: com.kdyzm.business   # ⾃动去除表前缀,默认是false   autoRemovePre: false

# 表前缀(⽣成类名不会包含表前缀,多个⽤逗号分隔)

tablePrefix: sys_


另外,这⾥要使⽤⾃定义包名com.kdyzm.business ,所以若依系统中mybatis 也要做相应的修改

修改mybatis 别名配置,增加对com.kdyzm 包名的识别

# MyBatis 配置mybatis:

# 搜索指定包别名

typeAliasesPackage: com.ruoyi.**.domain,com.kdyzm.**.domain


修改mybatis 的mapper 扫描包路径

修改com.ruoyi.framework.config.ApplicationConfig 类的MapperScan 注解,增加对com.kdyzm 包的扫描

#####

@MapperScan({"com.ruoyi.**.mapper","com.kdyzm.**.mapper"})

public class ApplicationConfig{

...

}


最后,在ruoyi-admin 新增⼀个Config 类,扫描com.kdyzm 包,以将ruoyi-business 模块中的所有组件纳⼊spring 管理。

package com.ruoyi.config;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;/**


* @author kdyzm  */@Configuration

@ComponentScan(basePackages = "com.kdyzm")public class Config {

}

3.准备表这⾥新建⼀张商品表作为⽰例,注意,这⾥的字段和表都要加上注释

CREATE TABLE `goods` (

`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',

`GOODS_NAME` varchar(255) DEFAULT NULL COMMENT '商品名字',

`put_way_flag` tinyint(1) DEFAULT NULL COMMENT '商品是否上架,0:下架,1:上架',

`create_time` datetime DEFAULT NULL COMMENT '创建时间',

`create_by` varchar(64) DEFAULT NULL COMMENT '创建⼈',

`update_time` datetime DEFAULT NULL COMMENT '更新时间',

`update_by` varchar(64) DEFAULT NULL COMMENT '更新⼈',

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品表'


4.⽣成代码

进⼊系统⼯具

-代码⽣成页⾯,点击导⼊按钮,找到

goods 表并导⼊,如下图所⽰

然后点击⽣成代码按钮



之后,就可以得到⼀个ruoyi.zip 压缩⽂件,压缩⽂件中包含⽣成的前后端代码以及sql 语句⽂件,⽣成的代码⽬录结构如下所⽰

├── goodsMenu.sql

├── main

│   ├── java 

│   │   └── com 

│   │       └── kdyzm

│   │           └── business

│   │               ├── controller

│   │               │   └── GoodsController.java

│   │               ├── domain

│   │               │   └── Goods.java

│   │               ├── mapper

│   │               │   └── GoodsMapper.java 

│   │               └── service 

│   │                   ├── IGoodsService.java

│   │                   └── impl

│   │                       └── GoodsServiceImpl.java

│   └── resources

│       └── mapper

│           └── business

│               └── GoodsMapper.xml

└── vue

├── api

│   └── business

│       └── goods.js

└── views

└── business

└── goods

└── index.vue


####

⼆、将⽣成的代码应⽤到项⽬


1.后端代码

将⽣成代码中的main ⽬录直接拷贝到ruoyi-business 模块下的src ⽬录,可以看到⽣成的代码是典型的三层架构,从controller 到mapper都已经帮我们⽣成好了。


白俊遥博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论