Skip to content

代码生成器模块概览

简介

若依代码生成器(Generator)是一个强大的开发工具,旨在帮助开发者快速生成标准化的业务代码,大幅提升开发效率。该模块基于数据库表结构自动生成完整的前后端代码,包括实体类、Service层、Controller层、Mapper层、前端页面等。

核心功能

🎯 智能代码生成

  • 全栈代码生成:一键生成前后端完整代码
  • 多模板支持:支持单表CRUD、树形结构、主子表三种模板类型
  • 自定义配置:灵活的字段配置和生成选项

📊 数据库支持

  • 多数据源:支持MySQL、PostgreSQL、Oracle、SQL Server等主流数据库
  • 智能识别:自动识别数据库表结构和字段类型
  • 结构同步:支持数据库结构变更后的同步更新

🔧 代码规范

  • 统一标准:生成的代码遵循项目既定的编码规范
  • 注释完善:自动生成详细的代码注释
  • 类型映射:智能的数据库类型到Java类型的映射

架构设计

模块结构

ruoyi-generator/
├── src/main/java/
│   └── plus/ruoyi/generator/
│       ├── config/              # 配置类
│       │   └── GenConfig.java   # 生成器配置
│       ├── constant/            # 常量定义
│       │   └── GenConstants.java # 生成器常量
│       ├── controller/          # 控制器层
│       │   └── GenController.java # 主控制器
│       ├── domain/              # 实体类
│       │   ├── GenTable.java    # 表配置实体
│       │   └── GenTableColumn.java # 字段配置实体
│       ├── mapper/              # 数据访问层
│       │   ├── GenTableMapper.java
│       │   └── GenTableColumnMapper.java
│       ├── service/             # 业务层
│       │   ├── IGenTableService.java
│       │   └── impl/
│       └── util/                # 工具类
│           ├── GenUtils.java    # 生成工具类
│           ├── VelocityUtils.java # 模板工具类
│           └── VelocityInitializer.java # 模板引擎初始化
└── src/main/resources/
    ├── mapper/                  # MyBatis映射文件
    ├── vm/                      # 代码模板
    │   ├── java/               # Java代码模板
    │   ├── vue/                # Vue页面模板
    │   ├── ts/                 # TypeScript模板
    │   └── sql/                # SQL脚本模板
    └── generator.yml           # 生成器配置文件

核心组件

1. 配置管理

  • GenConfig:生成器全局配置管理
  • GenConstants:常量定义,包含模板类型、字段类型映射等

2. 数据模型

  • GenTable:代码生成表配置,包含表信息、生成选项等
  • GenTableColumn:字段配置,包含字段类型、显示方式、权限等

3. 业务服务

  • GenTableService:核心业务逻辑,处理表导入、配置管理、代码生成等

4. 模板引擎

  • Velocity模板引擎:基于Apache Velocity实现代码模板渲染
  • 模板工具类:提供模板变量准备、文件生成等功能

技术栈

后端技术

  • Spring Boot:基础框架
  • MyBatis-Plus:数据访问层
  • Apache Velocity:模板引擎
  • Dynamic DataSource:多数据源支持
  • AnyLine:数据库元数据获取

前端技术

  • Vue 3:前端框架
  • Element Plus:UI组件库
  • TypeScript:类型安全支持
  • Vite:构建工具

生成代码结构

Java后端代码

generated-code/
├── domain/
│   ├── entity/          # 实体类
│   ├── vo/             # 视图对象
│   └── bo/             # 业务对象
├── mapper/             # 数据访问接口
├── service/            # 业务接口和实现
├── controller/         # 控制器
└── sql/               # SQL脚本(菜单配置)

前端代码

frontend-code/
├── api/               # API接口定义
│   ├── xxxApi.ts      # 接口调用方法
│   └── xxxTypes.ts    # TypeScript类型定义
└── views/             # 页面组件
    └── xxx/
        ├── xxx.vue    # 主页面
        └── xxxChild.vue # 子表页面(主子表模式)

模板类型

1. 单表CRUD模板(crud)

适用于简单的增删改查业务场景,生成标准的CRUD操作页面。

特点:

  • 标准的列表、新增、编辑、删除功能
  • 支持分页、搜索、排序
  • 支持数据导入导出

2. 树形结构模板(tree)

适用于具有层次关系的数据,如组织架构、菜单管理等。

特点:

  • 树形展示和操作
  • 支持节点的增删改查
  • 支持树形结构的展开折叠

3. 主子表模板(sub)

适用于一对多的业务关系,如订单和订单明细。

特点:

  • 主表和子表的关联管理
  • 支持在同一页面管理主子表数据
  • 自动处理主子表的数据关联

工作流程

1. 表导入阶段

mermaid
graph LR
    A[选择数据源] --> B[扫描数据库表]
    B --> C[选择要导入的表]
    C --> D[自动分析表结构]
    D --> E[生成基础配置]

2. 配置阶段

mermaid
graph LR
    A[基础配置] --> B[字段配置]
    B --> C[模板选择]
    C --> D[生成选项]
    D --> E[预览确认]

3. 代码生成阶段

mermaid
graph LR
    A[模板渲染] --> B[代码生成]
    B --> C[文件输出]
    C --> D[ZIP打包]
    D --> E[下载或保存]

配置选项

全局配置

yaml
# generator.yml
gen:
  # 作者信息
  author: 抓蛙师
  # 默认包路径
  packageName: plus.ruoyi.business.base
  # 自动去除表前缀
  autoRemovePre: true
  # 表前缀配置
  tablePrefix: sys_,a_,b_,c_,d_,e_,f_,g_,h_,i_,j_,k_,l_,m_,n_,o_,p_,q_,r_,s_,t_,u_,v_,w_,x_,y_,z_,

表级配置

  • 基础信息:表名、注释、类名等
  • 生成选项:包路径、模块名、业务名等
  • 模板类型:单表、树表、主子表选择
  • 关联配置:子表关联、树形字段配置

字段级配置

  • 基础属性:字段名、类型、注释等
  • 权限控制:增删改查权限设置
  • 显示配置:HTML控件类型、字典配置
  • 验证规则:必填、长度等验证配置

通过代码生成器模块,开发者可以快速构建标准化的业务功能,显著提升开发效率,减少重复性工作,让开发团队更专注于业务逻辑的实现。