# schog-gen **Repository Path**: d-black/schog-gen ## Basic Information - **Project Name**: schog-gen - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-07 - **Last Updated**: 2026-08-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # schog-gen > 基于数据库元数据的代码生成器脚手架 ## 项目简介 `schog-gen` 是一套 **元数据驱动** 的代码生成工具,能够读取自身数据库中的表结构、字段配置等信息,自动生成 Spring Boot + MyBatis-Plus 后端(Controller / Service / Entity / Mapper)与 Vue 3 + Element Plus 前端(表格 / 表单 / 路由)的 CRUD 代码。 当前 **v1.0** 为最小骨架版本,仅包含: - 项目基础框架与公共类(统一响应、分页封装、异常处理) - 数据库初始化脚本(12 张元数据管理表) - 单元测试:一次运行即可生成 12 张表的前后端完整增删改查代码 --- ## 技术栈 | 模块 | 技术 | |--------|----------------------------------------| | 后端 | Spring Boot 2.7.18, MyBatis-Plus 3.5.5, H2 | | 前端 | Vue 3, Element Plus, Axios, Vue Router | | 模板 | FreeMarker 2.3.32 | | 测试 | JUnit 5, MyBatis-Plus Generator | --- ## 快速开始 ### 1. 环境准备 - JDK 1.8+ - Maven 3.6+ - (可选)调整 `application.yml` 中的 H2 文件路径或端口 ### 2. 运行单元测试生成代码 ```bash cd schog-gen mvn test -Dtest=SchogGenApplicationTests#testGenerateAll ``` 生成后的代码默认输出在项目根目录下的 `generated/` 文件夹中,结构如下: ``` generated/ ├── src/main/java/... # 后端代码(Controller/Service/Entity/Mapper) ├── src/main/resources/mapper/ # MyBatis XML └── static/ # 前端代码(HTML/JS/lib) ``` ### 3. 部署生成代码(手动) 1. **后端**:将 `generated/src/main/java/` 下的 Java 文件复制到项目 `src/main/java/` 对应包中; 2. **Mapper XML**:将 `generated/src/main/resources/mapper/` 复制到 `src/main/resources/mapper/`; 3. **前端**:将 `generated/static/` 整个目录复制到 `src/main/resources/static/`。 ### 4. 启动应用 ```bash mvn spring-boot:run ``` 访问 [http://localhost:8080/index.html](http://localhost:8080/index.html) 即可看到 12 张元数据表的管理界面。 > 数据库首次启动会自动初始化(基于 `db/init.sql`),若已存在则跳过。 --- ## 项目结构 ``` schog-gen ├── pom.xml └── src ├── main │ ├── java/cn/kirsi/schog/gen │ │ ├── SchogGenApplication.java # 启动类 │ │ ├── common/ # 公共类(Result, PageData, PageQuery, GlobalExceptionHandler) │ │ └── config/ │ │ ├── DatabaseInitializer.java # 数据库自动初始化 │ │ ├── JacksonConfig.java # 日期序列化配置 │ │ └── MybatisPlusConfig.java # 分页插件配置 │ └── resources │ ├── application.yml │ └── db/init.sql # 建表 & 种子数据 └── test ├── java/.../SchogGenApplicationTests.java # 代码生成测试 └── resources ├── static/ # 前端静态模板(CrudTable、路由等) └── templates/ # FreeMarker 生成模板 ├── backend/ # 后端生成模板(Controller, Service 等) └── frontend/ # 前端生成模板(View, index, router) ``` --- ## 当前功能范围 (v1.0) - ✅ 自动生成单表 CRUD 接口(queryPage/add/update/delete/deleteBatch) - ✅ 前端通用表格组件 `CrudTable`,支持搜索、分页、批量删除 - ✅ 元数据表自举:用生成的代码管理自身的 12 张表 - ✅ 日期字段统一格式 `yyyy-MM-dd HH:mm:ss` - ✅ 分页插件已启用 - ⚠️ 仅支持 **单主键** 表(如 `id`),不支持复合主键 - ⚠️ 搜索仅支持 **等值匹配**,暂未实现模糊/范围查询 - ⚠️ 字典下拉数据需手动填充 --- --- ## 开发说明 - 数据库采用 H2 文件模式 (`./data/schog_gen.mv.db`),方便本地开发,生产可替换为 MySQL; - 生成模板位于 `src/test/resources/templates/`,可按需调整以改变生成代码风格; - 测试类 `SchogGenApplicationTests` 中的 `TABLES` 列表控制生成哪些表,可按需增减。 --- ## License MIT ---