From 4ce0ff02dbfea7f9af18160d3269b465986745ab Mon Sep 17 00:00:00 2001 From: "moshowgame@126.com" Date: Thu, 18 Oct 2018 13:52:24 +0800 Subject: [PATCH] support deal with column type of xxx(x,x) and some special character in '' --- README.md | 1 + .../system/generator/util/TableParseUtil.java | 24 +++++++++++++++---- .../src/main/resources/templates/index.ftl | 2 +- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 659d8bd..e12f8f0 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,7 @@ SpringBootCodeGenerator CSDN博客 http://blog.csdn.net/moshowgame 更新日期 更新内容 +20181018支持doublt(x,x)的类型,以及comment里面包含一些特殊字符的处理(感谢@tanwubo的反馈)。 20181010CDN变更,修复CDN不稳定导致网页js报错问题。 20181003新增element-ui/bootstrap生成。 20181002修复公共CDN之Layer.js404问题,导致项目无法生成。 diff --git a/generator-web/src/main/java/com/softdev/system/generator/util/TableParseUtil.java b/generator-web/src/main/java/com/softdev/system/generator/util/TableParseUtil.java index 6e9864d..d12680a 100644 --- a/generator-web/src/main/java/com/softdev/system/generator/util/TableParseUtil.java +++ b/generator-web/src/main/java/com/softdev/system/generator/util/TableParseUtil.java @@ -102,7 +102,7 @@ public class TableParseUtil { String fieldListTmp = tableSql.substring(tableSql.indexOf("(")+1, tableSql.lastIndexOf(")")); // 匹配 comment,替换备注里的小逗号, 防止不小心被当成切割符号切割 - Matcher matcher = Pattern.compile("\\ comment `(.*?)\\`").matcher(fieldListTmp); // "\\{(.*?)\\}" + Matcher matcher = Pattern.compile("comment `(.*?)\\`").matcher(fieldListTmp); // "\\{(.*?)\\}" while(matcher.find()){ String commentTmp = matcher.group(); @@ -114,8 +114,24 @@ public class TableParseUtil { fieldListTmp = fieldListTmp.replace(matcher.group(), commentTmpFinal); } } - - + //2018-10-18 zhengkai 新增支持double(10, 2)等类型中有英文逗号的特殊情况 + Matcher matcher2 = Pattern.compile("\\`(.*?)\\`").matcher(fieldListTmp); // "\\{(.*?)\\}" + while(matcher2.find()){ + String commentTmp2 = matcher2.group(); + if (commentTmp2.contains(",")) { + String commentTmpFinal = commentTmp2.replaceAll(",", ",").replaceAll("\\(", "(").replaceAll("\\)", ")"); + fieldListTmp = fieldListTmp.replace(matcher2.group(), commentTmpFinal); + } + } + //2018-10-18 zhengkai 新增支持double(10, 2)等类型中有英文逗号的特殊情况 + Matcher matcher3 = Pattern.compile("\\((.*?)\\)").matcher(fieldListTmp); // "\\{(.*?)\\}" + while(matcher3.find()){ + String commentTmp3 = matcher3.group(); + if (commentTmp3.contains(",")) { + String commentTmpFinal = commentTmp3.replaceAll(",", ","); + fieldListTmp = fieldListTmp.replace(matcher3.group(), commentTmpFinal); + } + } String[] fieldLineList = fieldListTmp.split(","); if (fieldLineList.length > 0) { int i=0;//i为了解决primary key关键字出现的地方,出现在前3行,一般和id有关 @@ -175,7 +191,7 @@ public class TableParseUtil { } //解决最后一句是评论,无主键且连着)的问题:album_id int(3) default '1' null comment '相册id:0 代表头像 1代表照片墙') if(commentTmp.contains(")")){ - commentTmp = commentTmp.substring(0, commentTmp.lastIndexOf(")")); + commentTmp = commentTmp.substring(0, commentTmp.lastIndexOf(")")+1); } fieldComment = commentTmp; }else if(tableSql.contains("comment on column")&&tableSql.contains("."+columnName+" is `")){ diff --git a/generator-web/src/main/resources/templates/index.ftl b/generator-web/src/main/resources/templates/index.ftl index bdb60d0..34a456a 100644 --- a/generator-web/src/main/resources/templates/index.ftl +++ b/generator-web/src/main/resources/templates/index.ftl @@ -79,7 +79,7 @@ CREATE TABLE `userinfo` (