Skip to content

Commit 0da68ae

Browse files
committed
| 2025.12.07 | 后端重构优化!
1 parent abaaa40 commit 0da68ae

File tree

3 files changed

+203
-100
lines changed

3 files changed

+203
-100
lines changed

@run.cmd

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
java -jar "./generator-web/target/generator-web-3.0.jar"
2-
pause
3-
mvn clean compile package
1+
mvn clean compile
2+
mvn spring-boot:run
43
pause

README.md

Lines changed: 201 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# SpringBootCodeGenerator
1+
# SpringBootCodeGenerator 大狼狗代码生成器
22
----
33
又名`Java代码生成器``JAVA在线代码生成平台``sql转java``大狼狗代码生成器``mybatis在线生成器``SQL转Java JPA、MYBATIS实现类代码生成平台`<br>
44
![image](https://img.shields.io/badge/SpringBoot3-%E2%98%85%E2%98%85%E2%98%85%E2%98%85%E2%98%85-blue.svg)
@@ -7,9 +7,13 @@
77
[![Java CI with Maven](https://github.com/moshowgame/SpringBootCodeGenerator/actions/workflows/maven.yml/badge.svg)](https://github.com/moshowgame/SpringBootCodeGenerator/actions/workflows/maven.yml)
88

99
# Author
10-
>powered by `Moshow郑锴(大狼狗)` , [https://zhengkai.blog.csdn.net](https://zhengkai.blog.csdn.net)
10+
>🚀
11+
Powered by `Moshow郑锴(大狼狗)` 🌟 Might the holy code be with you !
12+
> <br>**`CSDN`传送门**️️➡️ [https://zhengkai.blog.csdn.net](https://zhengkai.blog.csdn.net)
13+
> <br>**微信公众号**➡️`软件开发大百科`
1114
1215
# Description
16+
本项目是基于 Spring Boot 3 和 Freemarker 的高效代码生成平台,旨在帮助开发者告别繁琐重复的 CRUD 操作,释放双手,让开发更高效。项目支持主流数据库(MySQL、Oracle、PgSQL)和多种模板(JPA、Mybatis、MybatisPlus 等)。
1317
> 🚀 `Spring Boot Code Generator` — a powerful code generation platform built on SpringBoot3 & Freemarker
1418
> ✨ 基于 `SpringBoot3``Freemarker` 的高效代码生成平台
1519
@@ -34,47 +38,205 @@
3438
> 🙌 Special thanks to BeJSON 前站长 `三叔` 的慧眼与支持,让项目得以脱颖而出,感恩!
3539
3640

37-
# URL
38-
39-
- 感谢`卡卡`部署在[BEJSON](https://java.bejson.com/generator)上,目前是BeJSON专供的`金牌工具`<br>
40-
- 感谢`jully.top`部署的副本 [https://jully.top/generator/](https://jully.top/generator/)。<br>
41-
- 感谢`staticfile`CDN提供稳定、快速、免费的静态文件CDN加速服务(在线版本)
42-
43-
| 访问地址 | http://localhost:1234/generator |
44-
|:-----------------------|:--------------------------------------------------------------|
45-
| BEJSON 金牌工具 在线地址 | https://java.bejson.com/generator/ |
46-
| JSON.CN 金牌工具 在线地址 | https://java.json.cn/generator/ |
47-
| Jully 在线地址 | https://jully.top/generator/ |
48-
| NeverWaive 在线地址 | https://codegenerator.neverwaive.cn/ |
49-
| CSDN BLOG | https://zhengkai.blog.csdn.net |
50-
| GITEE仓库 | https://gitee.com/moshowgame/SpringBootCodeGenerator/releases |
51-
| GITHUB仓库 | https://github.com/moshowgame/SpringBootCodeGenerator |
52-
53-
# Tips or Features
54-
- 支持`DDL SQL`/`INSERT SQL`/`SIMPLE JSON`/`SELECT SQL`(*New)四种生成模式
55-
- `自动记忆`最近生成的内容,最多保留9个
56-
- 提供众多`通用模板`,易于使用,复制粘贴加简单修改即可完成CRUD操作
57-
- 支持`特殊字符`模板(`#`请用``代替;`$`请用``代替)
58-
- `Util集合`提供一些基本对象的使用方法供方便COPY,如对应的CRUD SQL语句、setMap、getMap、get属性等等
59-
- 关于`类名注释`,可根据`comment=(mysql)`或者`comment on table(pgsql/oracle)`生成
60-
- 可设置是否`自动引包`(java中的import)及`引入包路径`(java类中的package),建议取消并配合IDEA的自动引包更智能(Settings→Editor→General→Auto Import,勾选Add unambiguous imports on the fly以及Optimize imports on the fly)。
61-
- 可设置`表名前缀`,例如sys_user前缀为sys_之后可以正确生成user类
62-
- 可在`applicaltion.yml`中的`OEM.mode`设置`js/css引入模式``local`(本地模式,默认)/`CDN`(云CDN模式,在线网站推荐,省流量)
63-
- OEM信息可以在`applicaltion.yml`中的`OEM`中更改
64-
- *支持公共js/css的Local/CDN模式切换,方便`本地`或者`工具站`进行部署,可以在`application.yml``OEM.Mode=`进行设置,之后请在`header-CDN-v2.html`/`header-local-v2.html`中检查对应js/css配置是否正确。默认为`CDN`模式。对于没有网络的环境请使用`local`模式。
65-
- 如何判断是否包含Date日期类并引入,搜索`<#assign importDdate = true />`即可找到对应的方法判断和引入
66-
67-
# Branch Detail 分支介绍
68-
- Master:主力分支,基于SpringBoot3+,需要JDK17+
69-
- JDK11:兼容分支,版本落后,基于SpringBoot2+,但支持JDK8/JDK11等旧JDK版本[https://github.com/moshowgame/SpringBootCodeGenerator/tree/jdk11]
70-
71-
# 更新预告
72-
1.计划加入AI来帮忙生成更多样式的模板
73-
2.改进JSqlParser Engine (Select SQL and Create SQL)
41+
42+
## 功能特性
43+
44+
### 支持多种生成模式
45+
- DDL SQL 模式:通过建表语句生成代码
46+
- INSERT SQL 模式:通过插入语句生成代码
47+
- SELECT SQL 模式:通过查询语句生成代码
48+
- JSON 模式:通过 JSON 数据生成代码
49+
50+
### 支持多种模板
51+
- JPA 模板
52+
- MyBatis 模板
53+
- MyBatis-Plus 模板
54+
- BeetlSQL 模板
55+
- CommonMapper 模板
56+
- TkMyBatis 模板
57+
- JDBC Template 模板
58+
- 前端 UI 模板(Element UI、Bootstrap UI 等)
59+
60+
### 其他特性
61+
- 自动记忆最近生成的内容
62+
- 支持特殊字符模板(# 用 井 代替,$ 用 ¥ 代替)
63+
- 可设置表名前缀
64+
- 可选择是否自动引包
65+
- 支持本地/CDN 静态资源引入模式切换
66+
67+
## 技术栈
68+
69+
- Spring Boot 3
70+
- Freemarker 模板引擎
71+
- FastJSON2
72+
- JSqlParser SQL 解析器
73+
- Lombok 简化代码工具
74+
75+
## 使用说明
76+
77+
### 启动项目
78+
79+
```bash
80+
# 克隆项目
81+
git clone https://github.com/moshowgame/SpringBootCodeGenerator.git
82+
83+
# 进入项目目录
84+
cd SpringBootCodeGenerator
85+
# 编译项目
86+
mvn clean compile
87+
# 运行项目
88+
mvn spring-boot:run
89+
```
90+
91+
项目启动后访问 http://localhost:1234/generator
92+
93+
### 添加新模板
94+
95+
1.`resources/templates/code-generator` 目录中找到对应类型
96+
2. 复制并编写 Freemarker 模板文件(.ftl)
97+
3. 修改 `template.json` 文件,新增模板信息
98+
99+
### 配置说明
100+
101+
| **配置项** | **说明** | **默认值** |
102+
|:----|:----|:----|
103+
| 作者 | authorName | zhengkai.blog.csdn.net |
104+
| 包名 | packageName | cn.devtools |
105+
| 返回(成功) | returnUtilSuccess | Return.SUCCESS |
106+
| 返回(失败) | returnUtilFailure | Return.ERROR |
107+
| 忽略前缀 | ignorePrefix | sys_ |
108+
| 输入类型 | dataType | DDL SQL |
109+
| TinyInt转换 | tinyintTransType | int |
110+
| 时间类型 | timeTransType | Date |
111+
| 命名类型 | nameCaseType | CamelCase/驼峰 |
112+
| 是否包装类型 | isPackageType | true |
113+
| 是否swaggerUI | isSwagger | false |
114+
| 是否字段注释 | isComment | true |
115+
| 是否自动引包 | isAutoImport | |
116+
| 是否带包路径 | isWithPackage | |
117+
| 是否Lombok | isLombok | true |
118+
119+
| **模板变量** | **说明** |
120+
|:-------------|:---------------|
121+
| tableName | sql中的表名 |
122+
| className | java类名 |
123+
| classComment | sql表备注/java类备注 |
124+
| fieldName | 字段名 |
125+
| fieldComment | 字段备注 |
126+
127+
128+
129+
## 重构2025说明
130+
131+
本项目的重构2025在原有基础上进行了现代化重构,优化了项目结构和代码组织,使其更符合现代 Spring Boot 应用的最佳实践。
132+
133+
### 重构亮点
134+
135+
1. **清晰的分层架构**:采用 Controller-Service-DTO-VO 分层设计,各层职责明确
136+
2. **接口与实现分离**:服务层采用接口与实现分离的设计,便于测试和扩展
137+
3. **策略模式应用**:使用策略模式处理不同类型的 SQL 解析,易于扩展新的解析方式
138+
4. **现代化开发规范**:遵循 Spring Boot 和 Java 开发最佳实践
139+
5. **完善的异常处理**:统一异常处理机制,提供更友好的错误提示
140+
141+
### 重构后项目结构
142+
143+
```
144+
com.softdev.system.generator
145+
├── GeneratorApplication.java # 启动类
146+
├── config # 配置类包
147+
│ ├── WebMvcConfig.java # MVC配置
148+
│ └── GlobalExceptionHandler.java # 全局异常处理器
149+
├── controller # 控制层
150+
│ ├── PageController.java # 页面跳转控制器
151+
│ ├── CodeGenController.java # 代码生成相关接口
152+
│ └── TemplateController.java # 模板相关接口
153+
├── service # 服务层接口
154+
│ ├── CodeGenService.java # 代码生成服务接口
155+
│ ├── TemplateService.java # 模板服务接口
156+
│ └── parser
157+
│ ├── SqlParserService.java # SQL解析服务接口
158+
│ └── JsonParserService.java # JSON解析服务接口
159+
├── service.impl # 服务实现层
160+
│ ├── CodeGenServiceImpl.java # 代码生成服务实现
161+
│ ├── TemplateServiceImpl.java # 模板服务实现
162+
│ └── parser
163+
│ ├── SqlParserServiceImpl.java # SQL解析服务实现
164+
│ └── JsonParserServiceImpl.java # JSON解析服务实现
165+
├── entity # 实体类
166+
│ ├── dto
167+
│ │ ├── ParamInfo.java # 参数信息DTO
168+
│ │ ├── ClassInfo.java # 类信息DTO
169+
│ │ └── FieldInfo.java # 字段信息DTO
170+
│ ├── vo
171+
│ │ └── ResultVo.java # 统一返回结果VO
172+
│ └── enums
173+
│ └── ParserTypeEnum.java # 解析类型枚举
174+
├── util # 工具类包
175+
│ ├── FreemarkerUtil.java # Freemarker工具类
176+
│ ├── StringUtilsPlus.java # 字符串工具类
177+
│ ├── MapUtil.java # Map工具类
178+
│ ├── mysqlJavaTypeUtil.java # MySQL类型转换工具类
179+
│ └── exception
180+
│ ├── CodeGenException.java # 自定义业务异常
181+
│ └── SqlParseException.java # SQL解析异常
182+
└── constant # 常量定义
183+
└── CodeGenConstants.java # 代码生成常量(待实现)
184+
```
185+
186+
### 统一响应格式
187+
188+
所有控制器方法均返回 ResultVo 统一响应对象,保持与前端的兼容性:
189+
190+
```java
191+
// 成功响应
192+
ResultVo.ok(data)
193+
194+
// 错误响应
195+
ResultVo.error(message)
196+
```
197+
198+
## 重构优势
199+
200+
1. **结构清晰**:通过合理的包结构和分层设计,使项目结构更加清晰易懂
201+
2. **易于维护**:各层职责明确,便于定位和修复问题
202+
3. **易于扩展**:采用策略模式等设计模式,便于添加新的功能模块
203+
4. **现代化**:遵循 Spring Boot 和 Java 的最新最佳实践
204+
5. **前后端兼容**:保持与现有前端代码的数据交互格式,无缝升级
205+
206+
## 升级问题解决方案
207+
208+
### FastJSON 升级到 FastJSON2
209+
210+
如果在升级 FastJSON 到 FastJSON2 版本时遇到 FastJsonHttpMessageConverter 找不到类问题以及 FastJsonConfig 找不到问题,需要安装以下类库:
211+
- fastjson2
212+
- fastjson2-extension
213+
- fastjson2-extension-spring6
214+
215+
### Spring Boot 3 升级
216+
217+
当项目从 Spring Boot 2.x 升级到 3.x 时,可能会遇到 "java: 程序包 javax.servlet.http 不存在" 问题,这是因为 Spring Boot 3 使用了 Jakarta EE 9+,包名从 javax.* 变更为 jakarta.*
218+
219+
220+
## 版权信息
221+
222+
本项目遵循相关开源协议,欢迎提交问题、分享常用模板,或将你的灵感通过 PR 实现!
223+
224+
## Stargazers over time
225+
[![Stargazers over time](https://starchart.cc/moshowgame/SpringBootCodeGenerator.svg?variant=adaptive)](https://starchart.cc/moshowgame/SpringBootCodeGenerator)
226+
227+
2025 NewUI V2版本<br>
228+
<img src="./newui_version_2.png">
229+
配置模板<br>
230+
<img src="./codegenerator2.png">
231+
网站流量分析-2024<br>
232+
<img src="./site_analysis-2024.png">
233+
代码与你,越变越强<br>
234+
<img src="./donate.png">
74235

75236
# Update Logs
76237
| 更新日期 | 更新内容 |
77238
|:-----------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
239+
| 2025.12.07 | 后端重构优化![REFACTORING_DOCUMENT.md](REFACTORING_DOCUMENT.md) |
78240
| 2025.09.14 | 优化JSqlParser Engine(DDL Create SQL和Select SQL),适配更高级复杂的SQL |
79241
| 2025.09.13 | JSqlParser Engine全新升级,目前Select SQL模式相对稳定! <br>更新SpringBoot等类库版本,修复漏洞<br>修复CDN问题,切换为staticfile.org |
80242
| 2025.09.06 | 处理建表字段包含 using 字符时无法生成对应字段的情况(感谢@wubiaoo的反馈和@willxiang的PR) |
@@ -147,61 +309,3 @@
147309
| 2018.09.15 | 新增Swagger-UI模板.修复一些命名和导入问题.JPA的Entity默认第一个字段为Id,如果不是请手工修改. |
148310
| 2018.09.13 | 修复字段没有描述以及类型为DATE型导致的问题.新增JPA的Controller模板. |
149311
| 2018.08.31 | 初始化项目.新增JPA系列Entity+Repository模板. |
150-
151-
# ClassInfo/TableInfo
152-
|名称|说明|
153-
|:----|:----|
154-
|packageName|自定义的包名|
155-
|authorName|自定义的作者名|
156-
|tableName|sql中的表名|
157-
|className|java类名|
158-
|classComment|sql表备注/java类备注|
159-
|fieldName|字段名|
160-
|fieldComment|字段备注|
161-
162-
# Options
163-
|名称|说明|默认值|
164-
|:----|:----|:----|
165-
|作者 |authorName|zhengkai.blog.csdn.net|
166-
|包名 |packageName|cn.devtools|
167-
|返回(成功)|returnUtilSuccess|Return.SUCCESS|
168-
|返回(失败)|returnUtilFailure|Return.ERROR|
169-
|忽略前缀|ignorePrefix |sys_|
170-
|输入类型 |dataType|DDL SQL|
171-
|TinyInt转换 |tinyintTransType|int|
172-
|时间类型 |timeTransType|Date|
173-
|命名类型 |nameCaseType|CamelCase/驼峰|
174-
|是否包装类型 |isPackageType|true|
175-
|是否swaggerUI|isSwagger|false|
176-
|是否字段注释|isComment|true|
177-
|是否自动引包|isAutoImport||
178-
|是否带包路径|isWithPackage||
179-
|是否Lombok|isLombok|true|
180-
181-
182-
# How to add a new template
183-
1. `resources/templates/code-generator`中找到对应类型
184-
2. COPY并编写freemarker模板文件`.ftl`
185-
3. 修改`template.json`文件,新增模板信息,页面可动态加载
186-
187-
# Upgrade Issue Resolution 升级问题解决方案
188-
- 如果你最近也在升级FastJson到FastJson2版本,而跟我一样也遇到了FastJsonHttpMessageConverter找不到类问题以及FastJsonConfig找不到问题,那么恭喜你,看完本文,安装完fastjson2、fastjson2-extension、fastjson2-extension-spring6这三个类库,你就可以成功使用新版FastJson2了。
189-
[FastJson2中FastJsonHttpMessageConverter找不到类问题](https://blog.csdn.net/moshowgame/article/details/138013669)
190-
191-
- 当项目从2.7.x的springboot升级到3.0.x的时候,遇到一个问题“java: 程序包javax.servlet.http不存在” 问题:
192-
[java: 程序包javax.servlet.http不存在](https://zhengkai.blog.csdn.net/article/details/131362304)
193-
194-
- [CSDN【SpringBoot2启示录】专栏](https://blog.csdn.net/moshowgame/category_9274885.html)
195-
196-
## Stargazers over time
197-
[![Stargazers over time](https://starchart.cc/moshowgame/SpringBootCodeGenerator.svg?variant=adaptive)](https://starchart.cc/moshowgame/SpringBootCodeGenerator)
198-
199-
2025 NewUI V2版本
200-
<img src="./newui_version_2.png">
201-
配置模板
202-
<img src="./codegenerator2.png">
203-
网站流量分析-2024
204-
<img src="./site_analysis-2024.png">
205-
代码与你,越变越美
206-
<img src="./donate.png">
207-
File renamed without changes.

0 commit comments

Comments
 (0)