Skip to content

Commit dae6628

Browse files
committed
Update
1.java代码结构优化. 2.新增简单的json生成模式 3.新增简单的正则表达式匹配模式(感谢@ydq的贡献)
1 parent d738c58 commit dae6628

File tree

12 files changed

+246
-261
lines changed

12 files changed

+246
-261
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626

2727
|更新日期|更新内容|
2828
|-|-|
29+
|20191124|1.java代码结构优化. 2.新增简单的json生成模式 3.新增简单的正则表达式匹配模式(感谢@ydq的贡献) |
2930
|20191123|1.移除频繁出错和被过滤的layer,改为jquery-toast. 2.Util功能优化,新增json和xml.|
3031
|20191116|优化对primary关键字的处理(感谢@liujiansgit的反馈). |
3132
|20191115|1.添加tinyint类型转换(感谢@lixiliang&@liujiansgit的Suggestion) 2.添加一键复制功能(感谢@gaohanghang的Suggestion) 3.Mybatis的insert增加keyProperty="id"用于返回自增id(感谢@88888888888888888888的Suggestion) 4.优化date类型的支持(感谢@SteveLsf的反馈) 5.其他一些优化. |

generator-web/src/main/java/com/softdev/system/generator/config/GlobalDefaultExceptionHandler.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,19 @@
22

33
import javax.servlet.http.HttpServletRequest;
44

5+
import com.softdev.system.generator.entity.ReturnT;
56
import org.springframework.web.bind.annotation.ControllerAdvice;
67
import org.springframework.web.bind.annotation.ExceptionHandler;
78
import org.springframework.web.bind.annotation.ResponseBody;
89

9-
import com.softdev.system.generator.util.ApiReturnObject;
10-
import com.softdev.system.generator.util.ApiReturnUtil;
11-
1210
@ControllerAdvice
1311
public class GlobalDefaultExceptionHandler {
1412

1513
@ExceptionHandler(Exception.class)
1614
@ResponseBody
17-
public ApiReturnObject defaultExceptionHandler(HttpServletRequest req,Exception e) {
15+
public ReturnT defaultExceptionHandler(HttpServletRequest req,Exception e) {
1816
e.printStackTrace();
19-
//return new ApiReturnObject("01","server error", e.getMessage());
20-
return ApiReturnUtil.error("服务器异常",e.getMessage());
17+
return new ReturnT<>(ReturnT.FAIL_CODE, e.getMessage());
2118
}
2219

2320
}

generator-web/src/main/java/com/softdev/system/generator/controller/IndexController.java

Lines changed: 28 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
11
package com.softdev.system.generator.controller;
22

33
import com.softdev.system.generator.entity.ClassInfo;
4+
import com.softdev.system.generator.entity.ParamInfo;
45
import com.softdev.system.generator.entity.ReturnT;
6+
import com.softdev.system.generator.service.GeneratorService;
7+
import com.softdev.system.generator.util.CodeGenerateException;
58
import com.softdev.system.generator.util.FreemarkerTool;
69
import com.softdev.system.generator.util.TableParseUtil;
710
import freemarker.template.TemplateException;
811
import lombok.extern.slf4j.Slf4j;
912
import org.apache.commons.lang3.StringUtils;
1013
import org.springframework.beans.factory.annotation.Autowired;
1114
import org.springframework.stereotype.Controller;
12-
import org.springframework.web.bind.annotation.RequestMapping;
13-
import org.springframework.web.bind.annotation.RequestParam;
14-
import org.springframework.web.bind.annotation.ResponseBody;
15+
import org.springframework.web.bind.annotation.*;
1516

1617
import java.io.IOException;
1718
import java.util.HashMap;
@@ -26,94 +27,51 @@
2627
public class IndexController {
2728

2829
@Autowired
29-
private FreemarkerTool freemarkerTool;
30+
private GeneratorService generatorService;
3031

31-
@RequestMapping("/")
32+
@GetMapping("/")
3233
public String index() {
3334
return "index";
3435
}
3536

36-
@RequestMapping("/genCode")
37+
@PostMapping("/genCode")
3738
@ResponseBody
38-
public ReturnT<Map<String, String>> codeGenerate(String tableSql,
39-
//2019-2-10 liutf 修改为@RequestParam参数校验
40-
@RequestParam(required = false, defaultValue = "大狼狗") String authorName,
41-
@RequestParam(required = false, defaultValue = "com.softdev.system")String packageName,
42-
@RequestParam(required = false, defaultValue = "ApiReturnUtil")String returnUtil,
43-
@RequestParam(required = false, defaultValue = "true")boolean isUnderLineToCamelCase,
44-
@RequestParam(required = false, defaultValue = "boolean")String tinyintTransType
45-
) {
46-
39+
public ReturnT<Map<String, String>> codeGenerate( ParamInfo paramInfo ) {
4740

4841
try {
4942

50-
if (StringUtils.isBlank(tableSql)) {
43+
if (StringUtils.isBlank(paramInfo.getTableSql())) {
5144
return new ReturnT<>(ReturnT.FAIL_CODE, "表结构信息不可为空");
5245
}
5346

5447
// parse table
55-
ClassInfo classInfo = TableParseUtil.processTableIntoClassInfo(tableSql, isUnderLineToCamelCase, tinyintTransType);
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+
}
5657

57-
// code genarete
58+
// process the param
5859
Map<String, Object> params = new HashMap<String, Object>(8);
5960
params.put("classInfo", classInfo);
60-
params.put("authorName", authorName);
61-
params.put("packageName", packageName);
62-
params.put("returnUtil", returnUtil);
63-
64-
// result
65-
Map<String, String> result = new HashMap<String, String>(32);
61+
params.put("authorName", paramInfo.getAuthorName());
62+
params.put("packageName", paramInfo.getPackageName());
63+
params.put("returnUtil", paramInfo.getReturnUtil());
6664

67-
//UI
68-
result.put("swagger-ui", freemarkerTool.processString("code-generator/ui/swagger-ui.ftl", params));
69-
result.put("element-ui", freemarkerTool.processString("code-generator/ui/element-ui.ftl", params));
70-
result.put("bootstrap-ui", freemarkerTool.processString("code-generator/ui/bootstrap-ui.ftl", params));
71-
//mybatis old
72-
result.put("controller", freemarkerTool.processString("code-generator/mybatis/controller.ftl", params));
73-
result.put("service", freemarkerTool.processString("code-generator/mybatis/service.ftl", params));
74-
result.put("service_impl", freemarkerTool.processString("code-generator/mybatis/service_impl.ftl", params));
75-
result.put("mapper", freemarkerTool.processString("code-generator/mybatis/mapper.ftl", params));
76-
result.put("mybatis", freemarkerTool.processString("code-generator/mybatis/mybatis.ftl", params));
77-
result.put("model", freemarkerTool.processString("code-generator/mybatis/model.ftl", params));
78-
//jpa
79-
result.put("entity", freemarkerTool.processString("code-generator/jpa/entity.ftl", params));
80-
result.put("repository", freemarkerTool.processString("code-generator/jpa/repository.ftl", params));
81-
result.put("jpacontroller", freemarkerTool.processString("code-generator/jpa/jpacontroller.ftl", params));
82-
//jdbc template
83-
result.put("jtdao", freemarkerTool.processString("code-generator/jdbc-template/jtdao.ftl", params));
84-
result.put("jtdaoimpl", freemarkerTool.processString("code-generator/jdbc-template/jtdaoimpl.ftl", params));
85-
//beetsql
86-
result.put("beetlmd", freemarkerTool.processString("code-generator/beetlsql/beetlmd.ftl", params));
87-
result.put("beetlentity", freemarkerTool.processString("code-generator/beetlsql/beetlentity.ftl", params));
88-
result.put("beetlentitydto", freemarkerTool.processString("code-generator/beetlsql/beetlentitydto.ftl", params));
89-
result.put("beetlcontroller", freemarkerTool.processString("code-generator/beetlsql/beetlcontroller.ftl", params));
90-
//mybatis plus
91-
result.put("pluscontroller", freemarkerTool.processString("code-generator/mybatis-plus/pluscontroller.ftl", params));
92-
result.put("plusmapper", freemarkerTool.processString("code-generator/mybatis-plus/plusmapper.ftl", params));
93-
//util
94-
result.put("util", freemarkerTool.processString("code-generator/util/util.ftl", params));
95-
result.put("json", freemarkerTool.processString("code-generator/util/json.ftl", params));
96-
result.put("xml", freemarkerTool.processString("code-generator/util/xml.ftl", params));
97-
//sql generate
98-
result.put("select", freemarkerTool.processString("code-generator/sql/select.ftl", params));
99-
result.put("insert", freemarkerTool.processString("code-generator/sql/insert.ftl", params));
100-
result.put("update", freemarkerTool.processString("code-generator/sql/update.ftl", params));
101-
result.put("delete", freemarkerTool.processString("code-generator/sql/delete.ftl", params));
65+
// generate the code 需要加新的模板请在里面改
66+
Map<String, String> result = generatorService.getResultByParams(params);
10267

103-
// 计算,生成代码行数
104-
int lineNum = 0;
105-
for (Map.Entry<String, String> item: result.entrySet()) {
106-
if (item.getValue() != null) {
107-
lineNum += StringUtils.countMatches(item.getValue(), "\n");
108-
}
109-
}
110-
log.info("生成代码行数:{}", lineNum);
111-
//测试环境可自行开启
112-
//log.info("生成代码数据:{}", result);
11368
return new ReturnT<>(result);
11469
} catch (IOException | TemplateException e) {
11570
log.error(e.getMessage(), e);
116-
return new ReturnT<>(ReturnT.FAIL_CODE, "表结构解析失败"+e.getMessage());
71+
return new ReturnT<>(ReturnT.FAIL_CODE, e.getMessage());
72+
} catch (CodeGenerateException e) {
73+
log.error(e.getMessage(), e);
74+
return new ReturnT<>(ReturnT.FAIL_CODE, e.getMessage());
11775
}
11876

11977
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.softdev.system.generator.entity;
2+
3+
import lombok.Data;
4+
5+
/**
6+
* Post data - ParamInfo
7+
* @author zhengkai.blog.csdn.net
8+
*/
9+
@Data
10+
public class ParamInfo {
11+
private String tableSql;
12+
private String authorName;
13+
private String packageName;
14+
private String returnUtil;
15+
private boolean isUnderLineToCamelCase;
16+
String tinyintTransType;
17+
String dataType;
18+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.softdev.system.generator.service;
2+
3+
import freemarker.template.TemplateException;
4+
import org.springframework.stereotype.Service;
5+
6+
import java.io.IOException;
7+
import java.util.Map;
8+
9+
/**
10+
* GeneratorService
11+
* @author zhengkai.blog.csdn.net
12+
*/
13+
public interface GeneratorService {
14+
15+
public Map<String,String> getResultByParams(Map<String, Object> params) throws IOException, TemplateException;
16+
17+
}
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
package com.softdev.system.generator.service;
2+
3+
import com.softdev.system.generator.util.FreemarkerTool;
4+
import freemarker.template.TemplateException;
5+
import lombok.extern.slf4j.Slf4j;
6+
import org.springframework.beans.factory.annotation.Autowired;
7+
import org.springframework.stereotype.Service;
8+
9+
import java.io.IOException;
10+
import java.util.HashMap;
11+
import java.util.Map;
12+
13+
/**
14+
* GeneratorService
15+
* @author zhengkai.blog.csdn.net
16+
*/
17+
@Slf4j
18+
@Service
19+
public class GeneratorServiceImpl implements GeneratorService {
20+
21+
@Autowired
22+
private FreemarkerTool freemarkerTool;
23+
24+
@Override
25+
public Map<String, String> getResultByParams(Map<String, Object> params) throws IOException, TemplateException {
26+
// result
27+
Map<String, String> result = new HashMap<String, String>(32);
28+
29+
//UI
30+
result.put("swagger-ui", freemarkerTool.processString("code-generator/ui/swagger-ui.ftl", params));
31+
result.put("element-ui", freemarkerTool.processString("code-generator/ui/element-ui.ftl", params));
32+
result.put("bootstrap-ui", freemarkerTool.processString("code-generator/ui/bootstrap-ui.ftl", params));
33+
//mybatis old
34+
result.put("controller", freemarkerTool.processString("code-generator/mybatis/controller.ftl", params));
35+
result.put("service", freemarkerTool.processString("code-generator/mybatis/service.ftl", params));
36+
result.put("service_impl", freemarkerTool.processString("code-generator/mybatis/service_impl.ftl", params));
37+
result.put("mapper", freemarkerTool.processString("code-generator/mybatis/mapper.ftl", params));
38+
result.put("mybatis", freemarkerTool.processString("code-generator/mybatis/mybatis.ftl", params));
39+
result.put("model", freemarkerTool.processString("code-generator/mybatis/model.ftl", params));
40+
//jpa
41+
result.put("entity", freemarkerTool.processString("code-generator/jpa/entity.ftl", params));
42+
result.put("repository", freemarkerTool.processString("code-generator/jpa/repository.ftl", params));
43+
result.put("jpacontroller", freemarkerTool.processString("code-generator/jpa/jpacontroller.ftl", params));
44+
//jdbc template
45+
result.put("jtdao", freemarkerTool.processString("code-generator/jdbc-template/jtdao.ftl", params));
46+
result.put("jtdaoimpl", freemarkerTool.processString("code-generator/jdbc-template/jtdaoimpl.ftl", params));
47+
//beetsql
48+
result.put("beetlmd", freemarkerTool.processString("code-generator/beetlsql/beetlmd.ftl", params));
49+
result.put("beetlentity", freemarkerTool.processString("code-generator/beetlsql/beetlentity.ftl", params));
50+
result.put("beetlentitydto", freemarkerTool.processString("code-generator/beetlsql/beetlentitydto.ftl", params));
51+
result.put("beetlcontroller", freemarkerTool.processString("code-generator/beetlsql/beetlcontroller.ftl", params));
52+
//mybatis plus
53+
result.put("pluscontroller", freemarkerTool.processString("code-generator/mybatis-plus/pluscontroller.ftl", params));
54+
result.put("plusmapper", freemarkerTool.processString("code-generator/mybatis-plus/plusmapper.ftl", params));
55+
//util
56+
result.put("util", freemarkerTool.processString("code-generator/util/util.ftl", params));
57+
result.put("json", freemarkerTool.processString("code-generator/util/json.ftl", params));
58+
result.put("xml", freemarkerTool.processString("code-generator/util/xml.ftl", params));
59+
//sql generate
60+
result.put("select", freemarkerTool.processString("code-generator/sql/select.ftl", params));
61+
result.put("insert", freemarkerTool.processString("code-generator/sql/insert.ftl", params));
62+
result.put("update", freemarkerTool.processString("code-generator/sql/update.ftl", params));
63+
result.put("delete", freemarkerTool.processString("code-generator/sql/delete.ftl", params));
64+
65+
// 计算,生成代码行数
66+
/*int lineNum = 0;
67+
for (Map.Entry<String, String> item: result.entrySet()) {
68+
if (item.getValue() != null) {
69+
lineNum += StringUtils.countMatches(item.getValue(), "\n");
70+
}
71+
}
72+
log.info("生成代码行数:{}", lineNum);*/
73+
74+
//测试环境可自行开启
75+
//log.info("生成代码数据:{}", result);
76+
return result;
77+
}
78+
}

generator-web/src/main/java/com/softdev/system/generator/util/ApiReturnObject.java

Lines changed: 0 additions & 42 deletions
This file was deleted.

generator-web/src/main/java/com/softdev/system/generator/util/ApiReturnUtil.java

Lines changed: 0 additions & 50 deletions
This file was deleted.

0 commit comments

Comments
 (0)