Skip to content

Commit a84a4c1

Browse files
committed
1.修复支持string-copy导致的以n结尾的字母不显示问题 2.jpa-entity新增swagger@ApiModel@ApiModelProperty注解和SQL字段@column注解(感谢@yjq907的建议)
1 parent f746461 commit a84a4c1

File tree

5 files changed

+930
-918
lines changed

5 files changed

+930
-918
lines changed

README.md

Lines changed: 82 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -1,81 +1,82 @@
1-
# SpringBootCodeGenerator
2-
![image](https://img.shields.io/badge/SpringBoot2-%E2%98%85%E2%98%85%E2%98%85%E2%98%85%E2%98%85-brightgreen.svg)
3-
![image](https://img.shields.io/badge/Freemarker-%E2%98%85%E2%98%85%E2%98%85%E2%98%85%E2%98%85-brightgreen.svg)
4-
![image](https://img.shields.io/badge/CodeGenerator-%E2%98%85%E2%98%85%E2%98%85%E2%98%85%E2%98%85-brightgreen.svg)
5-
[![Build Status](https://travis-ci.org/moshowgame/SpringBootCodeGenerator.svg?branch=master)](https://travis-ci.org/moshowgame/SpringBootCodeGenerator)
6-
7-
8-
# Description
9-
- √ 基于SpringBoot2+Freemarker+Bootstrap
10-
- √ 以释放双手为目的
11-
- √ 支持mysql/oracle/pgsql三大数据库
12-
- √ 用DDL-SQL语句生成JPA/JdbcTemplate/Mybatis/MybatisPlus/BeetlSQL相关代码.
13-
14-
15-
# Url
16-
17-
|访问路径|http://localhost:1234/generator|
18-
|-|-|
19-
|在线地址|http://java.bejson.com/generator|
20-
|CSDN博客|http://zhengkai.blog.csdn.net|
21-
|最新Jar包|https://github.com/moshowgame/SpringBootCodeGenerator/releases|
22-
23-
感谢bejson三叔将他部署在[BEJSON](www.bejson.com)上,目前是besjon专供工具(线上版本不一定是最新的,会有延迟,请谅解,谢谢).
24-
25-
26-
# Update
27-
28-
|更新日期|更新内容|
29-
|-|-|
30-
|20191126|1.springboot2内置tomcat更换为性能更强大的undertow 2.修复tinyintTransType参数丢失问题 |
31-
|20191124|1.java代码结构优化. 2.新增简单的json生成模式 3.新增简单的正则表达式匹配模式(感谢@ydq的贡献) 4.新增对复制String代码中的乱SQL代码的支持 5.优化对JSON的父子节点/处理,JSONObject和JSONArray节点处理,子节点缺失'{'头处理|
32-
|20191123|1.移除频繁出错和被过滤的layer,改为jquery-toast. 2.Util功能优化,新增json和xml.|
33-
|20191116|优化对primary关键字的处理(感谢@liujiansgit的反馈). |
34-
|20191115|1.添加tinyint类型转换(感谢@lixiliang&@liujiansgit的Suggestion) 2.添加一键复制功能(感谢@gaohanghang的Suggestion) 3.Mybatis的insert增加keyProperty="id"用于返回自增id(感谢@88888888888888888888的Suggestion) 4.优化date类型的支持(感谢@SteveLsf的反馈) 5.其他一些优化. |
35-
|20191015|修复jdbcTemplates中insert语句第一个字段丢失的问题. |
36-
|20190915|1.添加对象getset模板 2.添加sql模板 3.启动类添加日志输出,方便项目使用(感谢@gaohanghang 的pull request) |
37-
|20190910-2|优化以及更新Maven依赖,减少打包体积. |
38-
|20190910-1|1.修复mapper接口load方法,但是xml中方法不匹配问题 2.移除mapper中CRUD时的@param 注解,会影响xml的解析(感谢@caojiantao的反馈).3.优化MyBatis的xml文件对Oracle的支持.(感谢@wylove1992的反馈) 4.新增对boolean的处理(感谢@violinxsc的反馈)以及优化tinyint类型生成boolean类型问题(感谢@hahaYhui的反馈) |
39-
|20190909|添加是否下划线转换为驼峰的选择(感谢@youngking28 的pull request).|
40-
|20190518|1.优化注释 2.修改 mybatis模板中 controller注解 3.修改 mybatis模板中 dao文件使用为 mapper文件 4.修改 mybatis模板中 service实现类中的一个 bug 5.修改 index.ftl文件中 mybatis模板的 dao -> mapper(感谢@unqin的pull request)|
41-
|20190511|优化mybatis模块的dao和xml模板,修改dao接口注解为@Repository,所有dao参数改为包装类,删除update语句最后的UpdateTime = NOW(),修改dao接口文件的方法注释使其更符合javaDoc的标准,修改insert语句增加插入行主键的返回,修改load的方法名为selectByPrimaryKey,修改xml的update语句新增动态if判空,修改xml的insert语句新增动态插入判空,更符合mybatisGenerator标准(感谢@Archer-Wen的贡献 ).|
42-
|20190429|新增返回封装工具类设置,优化对oracle注释comment on column的支持(感谢@liukex反馈),优化对普通和特殊storage关键字的判断(感谢@AhHeadFloating的反馈 ).|
43-
|20190211|提交gitignore,解决StringUtils.lowerCaseFirst潜在的NPE异常,校验修改为@RequestParam参数校验,lombok之@Data@Slf4j优化,fix JdbcDAO模板类名显示为中文问题,WebMvcConfig整合MessageConverter,模板代码分类(感谢@liutf@tfgzs的pull request).|
44-
|20190210|实体生成规则切换为包装类型,不再采用基本数据类型,为实体类生成添加显示的默认构造方法(感谢@h2so的pull request).|
45-
|20190106|修复处理number/decimal(x,x)类型的逻辑(感谢@arthaschan的反馈),修复JdbcTemplates模板两处错误(感谢@everflourish的反馈).|
46-
|20181212|首页UI优化,新增MybatisPlus模块(感谢@三叔同事的建议),修复作者名和包名获取失败问题(感谢@Yanch1994的反馈).|
47-
|20181122|优化正则表达式点号的处理,优化处理字段类型,对number类型增加int,long,BigDecimal的区分判断(感谢@lshz0088的指导).|
48-
|20181108|修复非字段描述"KEY FK_xxxx (xxxx)"导致生成KEY字段情况(感谢@tornadoorz反馈).|
49-
|20181018|支持double(x,x)的类型,以及comment里面包含一些特殊字符的处理(感谢@tanwubo的反馈).|
50-
|20181010|CDN变更,修复CDN不稳定导致网页js报错问题.|
51-
|20181003|新增element-ui/bootstrap生成.|
52-
|20181002|修复公共CDN之Layer.js404问题,导致项目无法生成.|
53-
|20180927|优化COMMENT提取逻辑,支持多种复杂情况的注释(感谢@raodeming的反馈).|
54-
|20180926|全新BeetlSQL模块,以及一些小细节优化(感谢@三叔同事的建议).|
55-
|20180925|优化SQL表和字段备注的推断,包括pgsql/oralce的comment on column/table情况处理等.|
56-
|20180918|优化SQL类型推断.优化PrimaryKey判断.修复jpacontroller中Repository拼写错误问题.|
57-
|20180917|全新首页,静态文件全部采用CDN.新增jdbcTemplate模块.|
58-
|20180916|1.优化oracle支持,优化DDL语句中"或者'或者空格的支持. 2.补充char/clob/blob/json等类型,如果类型未知,默认为String.|
59-
|20180915|新增Swagger-UI模板.修复一些命名和导入问题.JPA的Entity默认第一个字段为Id,如果不是请手工修改.|
60-
|20180913|修复字段没有描述以及类型为DATE型导致的问题.新增JPA的Controller模板.|
61-
|20180831|初始化项目.新增JPA系列Entity+Repository模板.|
62-
63-
# FieldName
64-
|字段名|说明|
65-
|-|-|
66-
|packageName|自定义的包名|
67-
|authorName|自定义的作者名|
68-
|returnUtil|自定义的返回Util|
69-
|tableName|sql中的表名|
70-
|className|java类名|
71-
|classComment|sql表备注/java类备注|
72-
|fieldName|字段名|
73-
|fieldComment|字段备注|
74-
75-
76-
<img src="./codegenerator1.png">
77-
<img src="./codegenerator2.png">
78-
<img src="./codegenerator3.png">
79-
<img src="./codegenerator4.png">
80-
<img src="./donate.jpg">
81-
1+
# SpringBootCodeGenerator
2+
![image](https://img.shields.io/badge/SpringBoot2-%E2%98%85%E2%98%85%E2%98%85%E2%98%85%E2%98%85-brightgreen.svg)
3+
![image](https://img.shields.io/badge/Freemarker-%E2%98%85%E2%98%85%E2%98%85%E2%98%85%E2%98%85-brightgreen.svg)
4+
![image](https://img.shields.io/badge/CodeGenerator-%E2%98%85%E2%98%85%E2%98%85%E2%98%85%E2%98%85-brightgreen.svg)
5+
[![Build Status](https://travis-ci.org/moshowgame/SpringBootCodeGenerator.svg?branch=master)](https://travis-ci.org/moshowgame/SpringBootCodeGenerator)
6+
7+
8+
# Description
9+
- √ 基于SpringBoot2+Freemarker+Bootstrap
10+
- √ 以释放双手为目的
11+
- √ 支持mysql/oracle/pgsql三大数据库
12+
- √ 用DDL-SQL语句生成JPA/JdbcTemplate/Mybatis/MybatisPlus/BeetlSQL相关代码.
13+
14+
15+
# Url
16+
17+
|访问路径|http://localhost:1234/generator|
18+
|-|-|
19+
|在线地址|http://java.bejson.com/generator|
20+
|CSDN博客|http://zhengkai.blog.csdn.net|
21+
|最新Jar包|https://github.com/moshowgame/SpringBootCodeGenerator/releases|
22+
23+
感谢bejson三叔将他部署在[BEJSON](www.bejson.com)上,目前是besjon专供工具(线上版本不一定是最新的,会有延迟,请谅解,谢谢).
24+
25+
26+
# Update
27+
28+
|更新日期|更新内容|
29+
|-|-|
30+
|20191128|1.修复支持string-copy导致的以n结尾的字母不显示问题 2.jpa-entity新增swagger@ApiModel@ApiModelProperty注解和SQL字段@Column注解(感谢@yjq907的建议) |
31+
|20191126|1.springboot2内置tomcat更换为性能更强大的undertow 2.修复tinyintTransType参数丢失问题 |
32+
|20191124|1.java代码结构优化. 2.新增简单的json生成模式 3.新增简单的正则表达式匹配模式(感谢@ydq的贡献) 4.新增对复制String代码中的乱SQL代码的支持 5.优化对JSON的父子节点/处理,JSONObject和JSONArray节点处理,子节点缺失'{'头处理|
33+
|20191123|1.移除频繁出错和被过滤的layer,改为jquery-toast. 2.Util功能优化,新增json和xml.|
34+
|20191116|优化对primary关键字的处理(感谢@liujiansgit的反馈). |
35+
|20191115|1.添加tinyint类型转换(感谢@lixiliang&@liujiansgit的Suggestion) 2.添加一键复制功能(感谢@gaohanghang的Suggestion) 3.Mybatis的insert增加keyProperty="id"用于返回自增id(感谢@88888888888888888888的Suggestion) 4.优化date类型的支持(感谢@SteveLsf的反馈) 5.其他一些优化. |
36+
|20191015|修复jdbcTemplates中insert语句第一个字段丢失的问题. |
37+
|20190915|1.添加对象getset模板 2.添加sql模板 3.启动类添加日志输出,方便项目使用(感谢@gaohanghang 的pull request) |
38+
|20190910-2|优化以及更新Maven依赖,减少打包体积. |
39+
|20190910-1|1.修复mapper接口load方法,但是xml中方法不匹配问题 2.移除mapper中CRUD时的@param 注解,会影响xml的解析(感谢@caojiantao的反馈).3.优化MyBatis的xml文件对Oracle的支持.(感谢@wylove1992的反馈) 4.新增对boolean的处理(感谢@violinxsc的反馈)以及优化tinyint类型生成boolean类型问题(感谢@hahaYhui的反馈) |
40+
|20190909|添加是否下划线转换为驼峰的选择(感谢@youngking28 的pull request).|
41+
|20190518|1.优化注释 2.修改 mybatis模板中 controller注解 3.修改 mybatis模板中 dao文件使用为 mapper文件 4.修改 mybatis模板中 service实现类中的一个 bug 5.修改 index.ftl文件中 mybatis模板的 dao -> mapper(感谢@unqin的pull request)|
42+
|20190511|优化mybatis模块的dao和xml模板,修改dao接口注解为@Repository,所有dao参数改为包装类,删除update语句最后的UpdateTime = NOW(),修改dao接口文件的方法注释使其更符合javaDoc的标准,修改insert语句增加插入行主键的返回,修改load的方法名为selectByPrimaryKey,修改xml的update语句新增动态if判空,修改xml的insert语句新增动态插入判空,更符合mybatisGenerator标准(感谢@Archer-Wen的贡献 ).|
43+
|20190429|新增返回封装工具类设置,优化对oracle注释comment on column的支持(感谢@liukex反馈),优化对普通和特殊storage关键字的判断(感谢@AhHeadFloating的反馈 ).|
44+
|20190211|提交gitignore,解决StringUtils.lowerCaseFirst潜在的NPE异常,校验修改为@RequestParam参数校验,lombok之@Data@Slf4j优化,fix JdbcDAO模板类名显示为中文问题,WebMvcConfig整合MessageConverter,模板代码分类(感谢@liutf@tfgzs的pull request).|
45+
|20190210|实体生成规则切换为包装类型,不再采用基本数据类型,为实体类生成添加显示的默认构造方法(感谢@h2so的pull request).|
46+
|20190106|修复处理number/decimal(x,x)类型的逻辑(感谢@arthaschan的反馈),修复JdbcTemplates模板两处错误(感谢@everflourish的反馈).|
47+
|20181212|首页UI优化,新增MybatisPlus模块(感谢@三叔同事的建议),修复作者名和包名获取失败问题(感谢@Yanch1994的反馈).|
48+
|20181122|优化正则表达式点号的处理,优化处理字段类型,对number类型增加int,long,BigDecimal的区分判断(感谢@lshz0088的指导).|
49+
|20181108|修复非字段描述"KEY FK_xxxx (xxxx)"导致生成KEY字段情况(感谢@tornadoorz反馈).|
50+
|20181018|支持double(x,x)的类型,以及comment里面包含一些特殊字符的处理(感谢@tanwubo的反馈).|
51+
|20181010|CDN变更,修复CDN不稳定导致网页js报错问题.|
52+
|20181003|新增element-ui/bootstrap生成.|
53+
|20181002|修复公共CDN之Layer.js404问题,导致项目无法生成.|
54+
|20180927|优化COMMENT提取逻辑,支持多种复杂情况的注释(感谢@raodeming的反馈).|
55+
|20180926|全新BeetlSQL模块,以及一些小细节优化(感谢@三叔同事的建议).|
56+
|20180925|优化SQL表和字段备注的推断,包括pgsql/oralce的comment on column/table情况处理等.|
57+
|20180918|优化SQL类型推断.优化PrimaryKey判断.修复jpacontroller中Repository拼写错误问题.|
58+
|20180917|全新首页,静态文件全部采用CDN.新增jdbcTemplate模块.|
59+
|20180916|1.优化oracle支持,优化DDL语句中"或者'或者空格的支持. 2.补充char/clob/blob/json等类型,如果类型未知,默认为String.|
60+
|20180915|新增Swagger-UI模板.修复一些命名和导入问题.JPA的Entity默认第一个字段为Id,如果不是请手工修改.|
61+
|20180913|修复字段没有描述以及类型为DATE型导致的问题.新增JPA的Controller模板.|
62+
|20180831|初始化项目.新增JPA系列Entity+Repository模板.|
63+
64+
# FieldName
65+
|字段名|说明|
66+
|-|-|
67+
|packageName|自定义的包名|
68+
|authorName|自定义的作者名|
69+
|returnUtil|自定义的返回Util|
70+
|tableName|sql中的表名|
71+
|className|java类名|
72+
|classComment|sql表备注/java类备注|
73+
|fieldName|字段名|
74+
|fieldComment|字段备注|
75+
76+
77+
<img src="./codegenerator1.png">
78+
<img src="./codegenerator2.png">
79+
<img src="./codegenerator3.png">
80+
<img src="./codegenerator4.png">
81+
<img src="./donate.jpg">
82+
Lines changed: 83 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -1,81 +1,83 @@
1-
package com.softdev.system.generator.controller;
2-
3-
import com.softdev.system.generator.entity.ClassInfo;
4-
import com.softdev.system.generator.entity.ParamInfo;
5-
import com.softdev.system.generator.entity.ReturnT;
6-
import com.softdev.system.generator.service.GeneratorService;
7-
import com.softdev.system.generator.util.CodeGenerateException;
8-
import com.softdev.system.generator.util.FreemarkerTool;
9-
import com.softdev.system.generator.util.TableParseUtil;
10-
import freemarker.template.TemplateException;
11-
import lombok.extern.slf4j.Slf4j;
12-
import org.apache.commons.lang3.StringUtils;
13-
import org.springframework.beans.factory.annotation.Autowired;
14-
import org.springframework.stereotype.Controller;
15-
import org.springframework.web.bind.annotation.*;
16-
17-
import java.io.IOException;
18-
import java.util.HashMap;
19-
import java.util.Map;
20-
21-
/**
22-
* spring boot code generator
23-
* @author zhengk/moshow
24-
*/
25-
@Controller
26-
@Slf4j
27-
public class IndexController {
28-
29-
@Autowired
30-
private GeneratorService generatorService;
31-
32-
@GetMapping("/")
33-
public String index() {
34-
return "index";
35-
}
36-
37-
@PostMapping("/genCode")
38-
@ResponseBody
39-
public ReturnT<Map<String, String>> codeGenerate( ParamInfo paramInfo ) {
40-
41-
try {
42-
43-
if (StringUtils.isBlank(paramInfo.getTableSql())) {
44-
return new ReturnT<>(ReturnT.FAIL_CODE, "表结构信息不可为空");
45-
}
46-
47-
// parse table
48-
ClassInfo classInfo = null;
49-
switch (paramInfo.getDataType()){
50-
//parse json
51-
case "json":classInfo = TableParseUtil.processJsonToClassInfo(paramInfo);break;
52-
//parse sql by regex
53-
case "sql-regex":classInfo = TableParseUtil.processTableToClassInfoByRegex(paramInfo);break;
54-
//default parse sql by java
55-
default : classInfo = TableParseUtil.processTableIntoClassInfo(paramInfo);break;
56-
}
57-
58-
// process the param
59-
Map<String, Object> params = new HashMap<String, Object>(8);
60-
params.put("classInfo", classInfo);
61-
params.put("authorName", paramInfo.getAuthorName());
62-
params.put("packageName", paramInfo.getPackageName());
63-
params.put("returnUtil", paramInfo.getReturnUtil());
64-
65-
log.info("generator table:"+(classInfo==null?"":classInfo.getTableName()));
66-
67-
// generate the code 需要加新的模板请在里面改
68-
Map<String, String> result = generatorService.getResultByParams(params);
69-
70-
return new ReturnT<>(result);
71-
} catch (IOException | TemplateException e) {
72-
log.error(e.getMessage(), e);
73-
return new ReturnT<>(ReturnT.FAIL_CODE, e.getMessage());
74-
} catch (CodeGenerateException e) {
75-
log.error(e.getMessage(), e);
76-
return new ReturnT<>(ReturnT.FAIL_CODE, e.getMessage());
77-
}
78-
79-
}
80-
81-
}
1+
package com.softdev.system.generator.controller;
2+
3+
import com.softdev.system.generator.entity.ClassInfo;
4+
import com.softdev.system.generator.entity.ParamInfo;
5+
import com.softdev.system.generator.entity.ReturnT;
6+
import com.softdev.system.generator.service.GeneratorService;
7+
import com.softdev.system.generator.util.CodeGenerateException;
8+
import com.softdev.system.generator.util.TableParseUtil;
9+
import freemarker.template.TemplateException;
10+
import lombok.extern.slf4j.Slf4j;
11+
import org.apache.commons.lang3.StringUtils;
12+
import org.springframework.beans.factory.annotation.Autowired;
13+
import org.springframework.stereotype.Controller;
14+
import org.springframework.web.bind.annotation.GetMapping;
15+
import org.springframework.web.bind.annotation.PostMapping;
16+
import org.springframework.web.bind.annotation.ResponseBody;
17+
18+
import java.io.IOException;
19+
import java.util.HashMap;
20+
import java.util.Map;
21+
22+
/**
23+
* spring boot code generator
24+
* @author zhengk/moshow
25+
*/
26+
@Controller
27+
@Slf4j
28+
public class IndexController {
29+
30+
@Autowired
31+
private GeneratorService generatorService;
32+
33+
@GetMapping("/")
34+
public String index() {
35+
return "index";
36+
}
37+
38+
@PostMapping("/genCode")
39+
@ResponseBody
40+
public ReturnT<Map<String, String>> codeGenerate( ParamInfo paramInfo ) {
41+
42+
try {
43+
44+
if (StringUtils.isBlank(paramInfo.getTableSql())) {
45+
return new ReturnT<>(ReturnT.FAIL_CODE, "表结构信息不可为空");
46+
}
47+
48+
// parse table
49+
ClassInfo classInfo = null;
50+
switch (paramInfo.getDataType()){
51+
//parse json
52+
case "json":classInfo = TableParseUtil.processJsonToClassInfo(paramInfo);break;
53+
//parse sql by regex
54+
case "sql-regex":classInfo = TableParseUtil.processTableToClassInfoByRegex(paramInfo);break;
55+
//default parse sql by java
56+
default : classInfo = TableParseUtil.processTableIntoClassInfo(paramInfo);break;
57+
}
58+
59+
// process the param
60+
Map<String, Object> params = new HashMap<String, Object>(8);
61+
params.put("classInfo", classInfo);
62+
params.put("authorName", paramInfo.getAuthorName());
63+
params.put("packageName", paramInfo.getPackageName());
64+
params.put("returnUtil", paramInfo.getReturnUtil());
65+
66+
log.info("generator table:"+(classInfo==null?"":classInfo.getTableName())
67+
+",field size:"+((classInfo==null||classInfo.getFieldList()==null)?"":classInfo.getFieldList().size()));
68+
69+
// generate the code 需要加新的模板请在里面改
70+
Map<String, String> result = generatorService.getResultByParams(params);
71+
72+
return new ReturnT<>(result);
73+
} catch (IOException | TemplateException e) {
74+
log.error(e.getMessage(), e);
75+
return new ReturnT<>(ReturnT.FAIL_CODE, e.getMessage());
76+
} catch (CodeGenerateException e) {
77+
log.error(e.getMessage(), e);
78+
return new ReturnT<>(ReturnT.FAIL_CODE, e.getMessage());
79+
}
80+
81+
}
82+
83+
}

0 commit comments

Comments
 (0)