From e68c2921b38a1c8786d31d8ea6a10c91a34e4592 Mon Sep 17 00:00:00 2001 From: "moshowgame@126.com" Date: Thu, 27 Sep 2018 21:41:58 +0800 Subject: [PATCH] fix up the bug when the comment has special things. --- README.md | 5 +++-- codegenerator1.png | Bin 35378 -> 0 bytes codegenerator2.png | Bin 14831 -> 0 bytes .../system/generator/util/TableParseUtil.java | 14 ++++++++++---- 4 files changed, 13 insertions(+), 6 deletions(-) delete mode 100644 codegenerator1.png delete mode 100644 codegenerator2.png diff --git a/README.md b/README.md index 05aa373..b0938c3 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ SpringBootCodeGenerator ---- 基于SpringBoot2+Freemarker的代码生成器,用DDL SQL语句生成JPA/JdbcTemplate/Mybatis/BeetlSQL相关代码,支持mysql/oracle/pgsql三大数据库。目前以JPA的为主,各大模板也在陆续优化。欢迎大家提交模板和交流想法!

-另外,感谢bejson三叔将他部署在http://java.bejson.com/generator上 +另外,感谢bejson三叔将他部署在http://java.bejson.com/generator上,成为besjon专供工具。

@@ -16,7 +16,8 @@ SpringBootCodeGenerator - + + diff --git a/codegenerator1.png b/codegenerator1.png deleted file mode 100644 index 386083515f8063491cad70ef437d1aab692ff49a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35378 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 diff --git a/codegenerator2.png b/codegenerator2.png deleted file mode 100644 index b6a32e2932544bb9a2ae46fd2cc89cbf22a6b4f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14831 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 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 e106520..6e9864d 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 @@ -93,7 +93,8 @@ public class TableParseUtil { //修复表备注为空问题 classComment = tableName; } - + //如果备注跟;混在一起,需要替换掉 + classComment=classComment.replaceAll(";",""); // field List List fieldList = new ArrayList(); @@ -101,11 +102,12 @@ 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(); - commentTmp = commentTmp.replaceAll("\\ comment '|\\'", ""); // "\\{|\\}" + //2018-9-27 zhengk 不替换,只处理,支持COMMENT评论里面多种注释 + //commentTmp = commentTmp.replaceAll("\\ comment `|\\`", " "); // "\\{|\\}" if (commentTmp.contains(",")) { String commentTmpFinal = commentTmp.replaceAll(",", ","); @@ -122,7 +124,7 @@ public class TableParseUtil { columnLine = columnLine.replaceAll("\n","").replaceAll("\t","").trim(); // `userid` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID', // 2018-9-18 zhengk 修改为contains,提升匹配率和匹配不按照规矩出牌的语句 - if (!columnLine.contains("constraint")&&!columnLine.contains("using") + if (!columnLine.contains("constraint")&&!columnLine.contains("using")&&!columnLine.contains("unique") &&!columnLine.contains("storage")&&!columnLine.contains("pctincrease") &&!columnLine.contains("buffer_pool")&&!columnLine.contains("tablespace") &&!(columnLine.contains("primary")&&i>3)){ @@ -171,6 +173,10 @@ public class TableParseUtil { if (commentTmp.contains("`") || commentTmp.indexOf("`")!=commentTmp.lastIndexOf("`")) { commentTmp = commentTmp.substring(commentTmp.indexOf("`")+1, commentTmp.lastIndexOf("`")); } + //解决最后一句是评论,无主键且连着)的问题:album_id int(3) default '1' null comment '相册id:0 代表头像 1代表照片墙') + if(commentTmp.contains(")")){ + commentTmp = commentTmp.substring(0, commentTmp.lastIndexOf(")")); + } fieldComment = commentTmp; }else if(tableSql.contains("comment on column")&&tableSql.contains("."+columnName+" is `")){ //新增对pgsql/oracle的字段备注支持
访问路径 http://127.0.0.1:1234/generator
CSDN博客 http://blog.csdn.net/moshowgame
更新日期 更新内容
20180926全新BeetlSQL模块,以及一些小细节优化。
20180927优化COMMENT提取逻辑,支持多种复杂情况的注释(感谢@raodeming的反馈)。
20180926全新BeetlSQL模块,以及一些小细节优化(感谢@三叔同事的建议)。
20180925优化SQL表和字段备注的推断,包括pgsql/oralce的comment on column/table情况处理等。
20180918优化SQL类型推断。优化PrimaryKey判断。修复jpacontroller中Repository拼写错误问题。
20180917全新首页,静态文件全部采用CDN。新增jdbcTemplate模块。