Skip to content

代码生成

代码生成系统是一个基于FreeMarker模板引擎的代码自动化生成平台,支持快速生成前后端代码,提高开发效率。

系统概述

代码生成系统采用前后端分离架构,提供可视化的代码生成管理界面,支持自定义模板、多数据源、项目管理等功能。

核心特性

  • 模板驱动:基于FreeMarker模板引擎,支持复杂的模板逻辑
  • 多数据源:支持MySQL、PostgreSQL等多种数据库
  • 可视化界面:提供友好的Web管理界面
  • 代码预览:在线预览生成的代码
  • 批量生成:支持批量生成多个表的代码
  • 增量生成:支持增量代码生成
  • 权限隔离:用户级数据隔离,保证数据安全

应用场景

  1. 快速原型开发:快速生成CRUD代码,加速原型开发
  2. 标准化开发:统一代码规范,保持项目一致性
  3. 代码重构:批量生成标准代码,替代手工编写
  4. 教学演示:用于教学演示代码生成原理

快速开始

1. 环境准备

后端环境:

  • JDK 17+
  • Maven 3.6+
  • MySQL 5.7+

前端环境:

  • Node.js 16+
  • npm 8+

2. 安装部署

后端部署:

bash
# 克隆代码
git clone https://github.com/shrimp-group/sh-generator.git

# 编译打包
cd sh-generator
mvn clean package -DskipTests

# 运行服务
cd generator-server-starter/target
java -jar generator-server-starter-1.0.0.jar

前端部署:

bash
cd generator-ui
npm install
npm run dev  # 开发环境
# 或
npm run build  # 生产环境

3. 基本使用流程

  1. 配置数据源:连接目标数据库
  2. 创建模板:设计代码生成模板
  3. 创建项目:组织数据源和模板
  4. 配置任务:定义生成规则
  5. 生成代码:一键生成并下载代码

核心概念

1. 数据源 (Datasource)

数据源定义了数据库连接信息,包括主机、端口、数据库名、用户名、密码等。每个用户可以配置多个数据源。

2. 模板 (Template)

模板是代码生成的核心,使用FreeMarker语法定义代码结构。系统提供多种预设模板,也支持自定义模板。

3. 项目 (Project)

项目是代码生成的组织单元,包含数据源、模板和任务配置。每个项目对应一个具体的代码生成需求。

4. 任务 (Task)

任务定义了模板的具体应用方式,包括生成路径、包路径、开关控制等。一个项目可以包含多个任务。

功能模块

模块功能说明
数据源管理数据库连接配置支持多数据库类型,用户级隔离
模板管理模板增删改查支持FreeMarker语法,在线编辑
项目管理项目配置管理组织数据源和模板,配置生成规则
任务管理任务配置管理定义生成路径、包路径等参数
代码生成代码生成与下载支持预览、批量生成、增量生成
生成日志操作日志记录记录生成历史,便于追溯

技术架构

后端技术栈

  • 框架:Spring Boot 3.x
  • 模板引擎:FreeMarker
  • 数据库:MySQL + MyBatis
  • 缓存:Redis(可选)
  • 构建工具:Maven

前端技术栈

  • 框架:Vue 3 + Element Plus
  • 构建工具:Vite
  • HTTP客户端:Axios
  • 状态管理:Pinia

数据库设计

系统包含以下核心表:

  • gen_datasource - 数据源表
  • gen_template - 模板表
  • gen_project - 项目表
  • gen_task - 任务表
  • gen_log - 日志表

使用示例

示例1:生成用户管理模块

  1. 数据源配置

    yaml
    数据源编码: mysql_prod
    数据库类型: MySQL
    主机名: localhost
    端口: 3306
    数据库: user_db
  2. 模板选择

    • Java实体类模板
    • MyBatis Mapper模板
    • Service接口模板
    • Controller模板
    • Vue页面模板
  3. 项目配置

    yaml
    项目名称: 用户管理模块
    模块名: user
    表前缀: t_user_
  4. 生成结果

    src/main/java/com/example/user/
    ├── domain/User.java
    ├── mapper/UserMapper.java
    ├── service/UserService.java
    └── rest/UserController.java
    
    src/main/resources/mapper/user/UserMapper.xml
    
    src/views/user/
    ├── index.vue
    └── components/

示例2:生成订单系统

  1. 数据源配置:连接订单数据库
  2. 模板定制:根据业务需求定制模板
  3. 批量生成:一次生成订单、商品、物流等多个模块
  4. 代码集成:将生成的代码集成到现有项目

最佳实践

1. 模板设计

  • 模块化设计:每个模板专注于单一功能
  • 参数化配置:通过变量控制生成内容
  • 错误处理:添加必要的空值判断和默认值

2. 项目组织

  • 按功能划分:每个功能模块创建独立项目
  • 版本管理:重要配置进行版本控制
  • 环境隔离:开发、测试、生产环境使用不同配置

3. 代码集成

  • 渐进式集成:先从小模块开始,逐步扩大
  • 代码审查:生成的代码仍需人工审查
  • 持续优化:根据实际使用反馈优化模板

常见问题

Q: 支持哪些数据库?

A: 目前支持MySQL、PostgreSQL、MariaDB、Oracle(两种驱动)。

Q: 模板语言是什么?

A: 使用FreeMarker模板语言,语法简单灵活,功能强大。

Q: 生成的代码质量如何?

A: 代码质量取决于模板设计,系统提供标准模板,也支持自定义优化。

Q: 是否支持团队协作?

A: 支持用户级数据隔离,团队成员可以独立使用,也可以通过导出导入配置协作。

Q: 学习成本高吗?

A: 系统提供可视化界面,基本操作无需编程知识;模板开发需要了解FreeMarker基础语法。

下一步

相关链接


提示:开始使用前,建议先阅读快速开始指南了解基本操作流程。

Released under the MIT License.