|
||
---|---|---|
images | ||
src/main | ||
.gitignore | ||
LICENSE | ||
README.md | ||
pom.xml | ||
push.sh |
README.md
🚀 Bunny Code Generator 代码生成器系统文档
🌟 项目简介
Bunny Code Generator 是一个高效、灵活的代码生成工具,支持从数据库表或SQL语句生成前后端代码,适用于多种数据库和前端框架。该项目采用现代化架构,具有良好的扩展性和维护性。
📦 技术栈
- 后端:Java 17+, Spring Boot 3.4.3, Apache Velocity, HikariCP
- 前端:Vue.js, Bootstrap, Axios, Day.js
- 构建工具:Maven
- 模板引擎:Velocity
- 数据库支持:MySQL 8.0+, 可扩展至 Oracle, PostgreSQL <20>
- 代码质量:后端代码质量评分 85/100,前端代码质量评分 78/100
🧩 核心功能模块
1. 核心控制器
GeneratorController
:主控制器,提供生成代码和下载ZIP文件的接口TableController
:获取数据库元数据信息SqlParserController
:解析SQL语句提取表和列信息WebController
:页面路由控制器VmsController
:获取前端代码模板路径
2. 元数据解析
DatabaseMetadataProvider
:数据库元数据提取器SqlMetadataProvider
:SQL语句元数据提取器DatabaseDialect
:数据库方言接口,支持多数据库扩展MySqlDialect
:MySQL方言实现,提取注释等信息
3. 代码生成引擎
AbstractTemplateGenerator
:抽象模板生成器,定义模板方法VmsTBaseTemplateGenerator
:具体模板实现,负责上下文填充和模板合并ZipFileUtil
:生成ZIP文件并下载MysqlTypeConvertUtil
:类型转换工具(SQL → Java/JS)
🛠️ 核心设计模式
- 模板方法模式:用于定义统一的代码生成流程
- 策略模式:用于数据库方言的灵活切换
- 工厂模式:用于生成不同类型的代码
- 建造者模式:用于构建元数据对象
📁 项目结构说明
src/main/java/cn/bunny/controller
:包含所有控制器src/main/java/cn/bunny/core
:核心模块,包含元数据提取、数据库方言等src/main/java/cn/bunny/domain
:数据模型定义src/main/java/cn/bunny/exception
:异常处理模块src/main/java/cn/bunny/service
:接口定义src/main/java/cn/bunny/service/impl
:接口实现src/main/java/cn/bunny/utils
:工具类src/main/resources/static/src
:前端组件和视图src/main/resources/vms
:Velocity 模板文件src/main/resources/templates
:前端页面模板
📄 代码生成流程
sequenceDiagram
participant F as 前端
participant C as Controller
participant S as Service
participant G as Generator
participant T as Template
F->>C: 提交生成请求
C->>S: 调用 GeneratorService
S->>G: 根据SQL或数据库表生成代码
G->>T: 使用 Velocity 模板合并代码
T-->>G: 返回生成的代码
G-->>S: 返回生成的代码列表
S-->>C: 返回生成结果
C-->>F: 返回代码/ZIP
🧱 核心类协作
classDiagram
class GeneratorController {
+generate()
+downloadByZip()
}
class GeneratorService {
+generateCodeByDatabase()
+generateCodeBySql()
}
class AbstractTemplateGenerator {
+generateCode()
#addContext()
#templateMerge()
}
class VmsTBaseTemplateGenerator {
+addContext()
+templateMerge()
}
GeneratorController --> GeneratorService
GeneratorService --> AbstractTemplateGenerator
AbstractTemplateGenerator <|-- VmsTBaseTemplateGenerator
📚 快速使用指南
1. 启动项目
mvn spring-boot:run
2. 生成代码
curl -X POST http://localhost:8080/api/generator \
-H "Content-Type: application/json" \
-d '{"database": "test_db", "table": "user", "package": "com.example"}'
3. 打包下载代码
curl -X POST http://localhost:8080/api/generator/downloadByZip \
-H "Content-Type: application/json" \
-d '{"database": "test_db", "table": "user", "package": "com.example"}'
🧩 扩展指南
添加新数据库支持
- 实现
DatabaseDialect
接口 - 创建
IMetadataProvider
实现 - 注册为Spring Bean
示例:
@Component
public class OracleDialect implements DatabaseDialect {
@Override
public String extractTableComment(String tableOptions) {
return "提取Oracle表注释逻辑";
}
@Override
public String extractColumnComment(List<String> columnSpecs) {
return "提取Oracle列注释逻辑";
}
}
依赖管理
<!-- SQL解析 -->
<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>4.9</version>
</dependency>
<!-- 模板引擎 -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.2</version>
</dependency>
⚙️ 性能优化点
- 使用
parallelStream()
并行处理多表生成 - HikariCP 配置:
hikari: maximum-pool-size: 20 connection-timeout: 30000
🔄 类型转换策略
SQL 类型 | Java 类型 | JS 类型 |
---|---|---|
VARCHAR | String | string |
INT | Integer | number |
DATETIME | LocalDateTime | Date |
BOOLEAN | Boolean | boolean |
📌 注意事项
- 确保数据库连接池配置合理
- 多数据库支持时注意方言实现
- 避免模板文件命名冲突(建议使用
$className
作为模板目录)
📝 版本兼容性
组件 | 支持版本 |
---|---|
JDK | 17+ |
MySQL | 8.0+ |
Spring Boot | 3.4.3 |
Vue.js | 3.x |
📎 代码质量评估
-
后端代码评分:85/100
- ✅ 合理使用设计模式(模板方法模式)
- ✅ 完善的异常处理体系
- ✅ 类型转换工具类封装良好
-
前端代码评分:78/100
- ✅ 组件化设计合理
- ✅ 响应式状态管理有效
- ⚠️ 部分表单验证逻辑重复
- ⚠️ 表格分页逻辑可抽取为独立组件
💚 支持项目 ☕
如果这个项目对您有帮助,可以考虑支持我们:
Happy Coding! 🎉