Skip to content

Commit 8a2d198

Browse files
committed
optimize sql type judgement,optimize primary key judgement,fix up the spell of repository on jpacontroller
1 parent 901c843 commit 8a2d198

3 files changed

Lines changed: 28 additions & 19 deletions

File tree

README.md

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
1-
![image](https://img.shields.io/badge/SpringBoot-%E2%98%85%E2%98%85%E2%98%85-green.svg)
2-
![image](https://img.shields.io/badge/CodeGenerator-%E2%98%85%E2%98%85%E2%98%85-green.svg)
1+
![image](https://img.shields.io/badge/SpringBoot2-%E2%98%85%E2%98%85%E2%98%85%E2%98%85%E2%98%85-brightgreen.svg)
2+
![image](https://img.shields.io/badge/Freemarker-%E2%98%85%E2%98%85%E2%98%85%E2%98%85%E2%98%85-brightgreen.svg)
3+
![image](https://img.shields.io/badge/CodeGenerator-%E2%98%85%E2%98%85%E2%98%85%E2%98%85%E2%98%85-brightgreen.svg)
4+
[![Build Status](https://travis-ci.org/moshowgame/SpringBootCodeGenerator.svg?branch=master)](https://travis-ci.org/moshowgame/SpringBootCodeGenerator)
5+
<br>
6+
37
SpringBootCodeGenerator
48
----
5-
基于SpringBoot2+xxl-codegenerator的代码生成器。用DDL语句生成JPA/JdbcTemplate/Mybatis相关代码,目前以JPA的为主,各大模板也在陆续优化。
9+
基于SpringBoot2+Freemarker的代码生成器。用DDL语句生成JPA/JdbcTemplate/Mybatis相关代码,目前以JPA的为主,各大模板也在陆续优化。
610
<br><br>
711
感谢bejson三叔将他部署在http://java.bejson.com/generator上
812
<br><br>
@@ -12,6 +16,7 @@ SpringBootCodeGenerator
1216
<tr><td>CSDN博客</td> <td>http://blog.csdn.net/moshowgame</td></tr>
1317
<tr><td></td> <td></td></tr>
1418
<tr><td>更新日期</td> <td>更新内容</td></tr>
19+
<tr><td>20180918<td>优化SQL类型推断。优化PrimaryKey判断。修复jpacontroller中Repository拼写错误问题。</td></tr>
1520
<tr><td>20180917<td>全新首页,静态文件全部采用CDN。新增jdbcTemplate模块。</td></tr>
1621
<tr><td>20180916-2<td>优化oracle支持,优化DDL语句中"或者'或者空格的支持。</td></tr>
1722
<tr><td>20180916-1<td>补充char/clob/blob/json等类型,如果类型未知,默认为String。</td></tr>

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

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -102,12 +102,16 @@ public static ClassInfo processTableIntoClassInfo(String tableSql) throws IOExce
102102

103103
String[] fieldLineList = fieldListTmp.split(",");
104104
if (fieldLineList.length > 0) {
105+
int i=0;//i为了解决primary key关键字出现的地方,出现在前3行,一般和id有关
105106
for (String columnLine :fieldLineList) {
106-
columnLine = columnLine.replaceAll("\n","").replaceAll("\t","").trim(); // `userid` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
107+
i++;
108+
columnLine = columnLine.replaceAll("\n","").replaceAll("\t","").trim();
109+
// `userid` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
110+
// 2018-9-18 zhengk 修改为contains,提升匹配率和匹配不按照规矩出牌的语句
107111
if (!columnLine.contains("constraint")&&!columnLine.contains("using")
108112
&&!columnLine.contains("storage")&&!columnLine.contains("pctincrease")
109113
&&!columnLine.contains("buffer_pool")&&!columnLine.contains("tablespace")
110-
&&!columnLine.contains("primary")){
114+
&&!(columnLine.contains("primary")&&i>3)){
111115

112116
//如果是oracle的number(x,x),可能出现最后分割残留的,x),这里做排除处理
113117
if(columnLine.length()<5) continue;
@@ -127,20 +131,20 @@ public static ClassInfo processTableIntoClassInfo(String tableSql) throws IOExce
127131
columnLine = columnLine.substring(columnLine.indexOf("`")+1).trim(); // int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
128132
String fieldClass = Object.class.getSimpleName();
129133
//2018-9-16 zhengk 补充char/clob/blob/json等类型,如果类型未知,默认为String
130-
if (columnLine.startsWith("int") || columnLine.startsWith("tinyint") || columnLine.startsWith("smallint")) {
134+
if (columnLine.contains("int") || columnLine.contains("tinyint") || columnLine.contains("smallint")) {
131135
fieldClass = Integer.TYPE.getSimpleName();
132-
} else if (columnLine.startsWith("bigint")) {
136+
} else if (columnLine.contains("bigint")) {
133137
fieldClass = Long.TYPE.getSimpleName();
134-
} else if (columnLine.startsWith("float")) {
138+
} else if (columnLine.contains("float")) {
135139
fieldClass = Float.TYPE.getSimpleName();
136-
} else if (columnLine.startsWith("double")) {
140+
} else if (columnLine.contains("double")) {
137141
fieldClass = Double.TYPE.getSimpleName();
138-
} else if (columnLine.startsWith("datetime") || columnLine.startsWith("timestamp")) {
142+
} else if (columnLine.contains("datetime") || columnLine.contains("timestamp")) {
139143
fieldClass = Date.class.getSimpleName();
140-
} else if (columnLine.startsWith("varchar") || columnLine.startsWith("text")|| columnLine.startsWith("char")
141-
|| columnLine.startsWith("clob")||columnLine.startsWith("blob")||columnLine.startsWith("json")) {
144+
} else if (columnLine.contains("varchar") || columnLine.contains("text")|| columnLine.contains("char")
145+
|| columnLine.contains("clob")||columnLine.contains("blob")||columnLine.contains("json")) {
142146
fieldClass = String.class.getSimpleName();
143-
} else if (columnLine.startsWith("decimal")||columnLine.startsWith("number")) {
147+
} else if (columnLine.contains("decimal")||columnLine.contains("number")) {
144148
fieldClass = BigDecimal.class.getSimpleName();
145149
} else {
146150
fieldClass = String.class.getSimpleName();

generator-web/src/main/resources/templates/xxl-code-generator/jpacontroller.ftl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,24 +19,24 @@ import java.util.Map;
1919
public class ${classInfo.className}Controller {
2020

2121
@Autowired
22-
private ${classInfo.className}Respository ${classInfo.className?uncap_first}Respository;
22+
private ${classInfo.className}Repository ${classInfo.className?uncap_first}Repository;
2323

2424
/**
2525
* 新增或编辑
2626
*/
2727
@PostMapping("/save")
2828
public Object save(${classInfo.className} ${classInfo.className?uncap_first}){
29-
return ${classInfo.className?uncap_first}Respository.save(${classInfo.className?uncap_first});
29+
return ${classInfo.className?uncap_first}Repository.save(${classInfo.className?uncap_first});
3030
}
3131

3232
/**
3333
* 删除
3434
*/
3535
@GetMapping("/delete")
3636
public Object delete(int id){
37-
Optional<${classInfo.className}> ${classInfo.className?uncap_first}=${classInfo.className?uncap_first}Respository.findById(id);
37+
Optional<${classInfo.className}> ${classInfo.className?uncap_first}=${classInfo.className?uncap_first}Repository.findById(id);
3838
if(${classInfo.className?uncap_first}.isPresent()){
39-
${classInfo.className?uncap_first}Respository.deleteById(id);
39+
${classInfo.className?uncap_first}Repository.deleteById(id);
4040
return ApiReturnUtil.success("删除成功");
4141
}else{
4242
return ApiReturnUtil.error("没有找到该对象");
@@ -48,7 +48,7 @@ public class ${classInfo.className}Controller {
4848
*/
4949
@GetMapping("/find")
5050
public Object load(int id){
51-
Optional<${classInfo.className}> ${classInfo.className?uncap_first}=${classInfo.className?uncap_first}Respository.findById(id);
51+
Optional<${classInfo.className}> ${classInfo.className?uncap_first}=${classInfo.className?uncap_first}Repository.findById(id);
5252
if(${classInfo.className?uncap_first}.isPresent()){
5353
return ApiReturnUtil.success(${classInfo.className?uncap_first}.get());
5454
}else{
@@ -72,7 +72,7 @@ public class ${classInfo.className}Controller {
7272
//分页构造
7373
Pageable pageable = PageRequest.of(pageNumber,pageSize);
7474

75-
return ${classInfo.className?uncap_first}Respository.findAll(example, pageable);
75+
return ${classInfo.className?uncap_first}Repository.findAll(example, pageable);
7676
}
7777

7878
}

0 commit comments

Comments
 (0)