生成代码结构与二开边界
生成的文件分层
生成的代码
├── 后端 Java
│ ├── Entity ← 可直接使用
│ ├── Mapper.java ← 可直接使用
│ ├── Mapper.xml ← 可直接使用(需补充自定义 SQL)
│ ├── Service.java ← 接口,可直接使用
│ ├── ServiceImpl ← 可直接使用(业务逻辑在此扩展)
│ └── Controller ← 可直接使用(可追加自定义接口)
├── 前端 Vue
│ ├── index.vue ← 列表页,可直接使用
│ ├── Form.vue ← 表单弹窗,可直接使用
│ └── xxx.js ← API 定义,可直接使用
└── SQL
└── menu.sql ← 菜单注册脚本,需执行可直接使用的文件
以下文件生成后无需修改即可运行:
| 文件 | 说明 |
|---|---|
| Entity | 实体类,字段与数据库一致 |
| Mapper.java | 基础 CRUD 接口 |
| Mapper.xml | 基础分页查询 SQL |
| Service.java | 服务接口定义 |
| Vue index.vue | 标准 CRUD 列表页 |
| Vue Form.vue | 标准 CRUD 表单弹窗 |
| API xxx.js | 前端 API 调用 |
需要手动修改的文件
| 文件 | 修改场景 | 修改方式 |
|---|---|---|
| ServiceImpl | 添加业务逻辑 | 在方法中补充业务代码 |
| Mapper.xml | 添加自定义查询 | 新增 SQL 语句 |
| Controller | 添加自定义接口 | 新增方法 |
| Vue index.vue | 自定义列表交互 | 修改组件逻辑 |
| Vue Form.vue | 自定义表单交互 | 修改组件逻辑 |
代码合并策略
后端合并
- Entity、Mapper、Service 接口:保持生成版本,不手动修改
- ServiceImpl:生成的方法为基线,在方法内添加业务逻辑
- Mapper XML:基础 SQL 保留,自定义 SQL 追加在文件末尾
- Controller:基础接口保留,自定义接口追加
前端合并
- API 文件:保持生成版本,追加自定义 API
- Vue 页面:以生成版本为模板,按需修改交互逻辑
重新生成时的合并
| 场景 | 策略 |
|---|---|
| 表结构变更 | 重新生成 Entity 和 Mapper,手动合并 ServiceImpl |
| 新增字段 | 重新生成全部文件,使用 diff 工具手动合并 |
| 仅修改配置 | 重新生成后直接覆盖 |
最佳实践
- 生成代码后先提交一次 Git,作为基线版本
- 业务逻辑修改在 ServiceImpl 中进行,不修改接口签名
- 自定义 SQL 写在 Mapper XML 中,不使用 LambdaQueryWrapper
- 前端修改保持在组件级别,不修改 API 定义文件
