代码生成
代码生成系统是一个基于FreeMarker模板引擎的代码自动化生成平台,支持快速生成前后端代码,提高开发效率。
系统概述
代码生成系统采用前后端分离架构,提供可视化的代码生成管理界面,支持自定义模板、多数据源、项目管理等功能。
核心特性
- 模板驱动:基于FreeMarker模板引擎,支持复杂的模板逻辑
- 多数据源:支持MySQL、PostgreSQL等多种数据库
- 可视化界面:提供友好的Web管理界面
- 代码预览:在线预览生成的代码
- 批量生成:支持批量生成多个表的代码
- 增量生成:支持增量代码生成
- 权限隔离:用户级数据隔离,保证数据安全
应用场景
- 快速原型开发:快速生成CRUD代码,加速原型开发
- 标准化开发:统一代码规范,保持项目一致性
- 代码重构:批量生成标准代码,替代手工编写
- 教学演示:用于教学演示代码生成原理
快速开始
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. 数据源 (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:生成用户管理模块
数据源配置
yaml数据源编码: mysql_prod 数据库类型: MySQL 主机名: localhost 端口: 3306 数据库: user_db模板选择
- Java实体类模板
- MyBatis Mapper模板
- Service接口模板
- Controller模板
- Vue页面模板
项目配置
yaml项目名称: 用户管理模块 模块名: user 表前缀: t_user_生成结果
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. 代码集成
- 渐进式集成:先从小模块开始,逐步扩大
- 代码审查:生成的代码仍需人工审查
- 持续优化:根据实际使用反馈优化模板
常见问题
Q: 支持哪些数据库?
A: 目前支持MySQL、PostgreSQL、MariaDB、Oracle(两种驱动)。
Q: 模板语言是什么?
A: 使用FreeMarker模板语言,语法简单灵活,功能强大。
Q: 生成的代码质量如何?
A: 代码质量取决于模板设计,系统提供标准模板,也支持自定义优化。
Q: 是否支持团队协作?
A: 支持用户级数据隔离,团队成员可以独立使用,也可以通过导出导入配置协作。
Q: 学习成本高吗?
A: 系统提供可视化界面,基本操作无需编程知识;模板开发需要了解FreeMarker基础语法。
下一步
相关链接
提示:开始使用前,建议先阅读快速开始指南了解基本操作流程。