fix up the bug when the comment has special things.

This commit is contained in:
moshowgame@126.com
2018-09-27 21:41:58 +08:00
parent 5c65251c6c
commit e68c2921b3
4 changed files with 13 additions and 6 deletions

View File

@@ -8,7 +8,7 @@ SpringBootCodeGenerator
---- ----
基于SpringBoot2+Freemarker的代码生成器用DDL SQL语句生成JPA/JdbcTemplate/Mybatis/BeetlSQL相关代码支持mysql/oracle/pgsql三大数据库。目前以JPA的为主各大模板也在陆续优化。欢迎大家提交模板和交流想法 基于SpringBoot2+Freemarker的代码生成器用DDL SQL语句生成JPA/JdbcTemplate/Mybatis/BeetlSQL相关代码支持mysql/oracle/pgsql三大数据库。目前以JPA的为主各大模板也在陆续优化。欢迎大家提交模板和交流想法
<br><br> <br><br>
另外感谢bejson三叔将他部署在http://java.bejson.com/generator上 另外感谢bejson三叔将他部署在http://java.bejson.com/generator上成为besjon专供工具。
<br><br> <br><br>
<table><tbody> <table><tbody>
<tr><td>访问路径</td> <td>http://127.0.0.1:1234/generator</td></tr> <tr><td>访问路径</td> <td>http://127.0.0.1:1234/generator</td></tr>
@@ -16,7 +16,8 @@ SpringBootCodeGenerator
<tr><td>CSDN博客</td> <td>http://blog.csdn.net/moshowgame</td></tr> <tr><td>CSDN博客</td> <td>http://blog.csdn.net/moshowgame</td></tr>
<tr><td></td> <td></td></tr> <tr><td></td> <td></td></tr>
<tr><td>更新日期</td> <td>更新内容</td></tr> <tr><td>更新日期</td> <td>更新内容</td></tr>
<tr><td>20180926<td>全新BeetlSQL模块以及一些小细节优化</td></tr> <tr><td>20180927<td>优化COMMENT提取逻辑支持多种复杂情况的注释感谢@raodeming的反馈</td></tr>
<tr><td>20180926<td>全新BeetlSQL模块以及一些小细节优化感谢@三叔同事的建议)。</td></tr>
<tr><td>20180925<td>优化SQL表和字段备注的推断包括pgsql/oralce的comment on column/table情况处理等。</td></tr> <tr><td>20180925<td>优化SQL表和字段备注的推断包括pgsql/oralce的comment on column/table情况处理等。</td></tr>
<tr><td>20180918<td>优化SQL类型推断。优化PrimaryKey判断。修复jpacontroller中Repository拼写错误问题。</td></tr> <tr><td>20180918<td>优化SQL类型推断。优化PrimaryKey判断。修复jpacontroller中Repository拼写错误问题。</td></tr>
<tr><td>20180917<td>全新首页静态文件全部采用CDN。新增jdbcTemplate模块。</td></tr> <tr><td>20180917<td>全新首页静态文件全部采用CDN。新增jdbcTemplate模块。</td></tr>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -93,7 +93,8 @@ public class TableParseUtil {
//修复表备注为空问题 //修复表备注为空问题
classComment = tableName; classComment = tableName;
} }
//如果备注跟;混在一起,需要替换掉
classComment=classComment.replaceAll(";","");
// field List // field List
List<FieldInfo> fieldList = new ArrayList<FieldInfo>(); List<FieldInfo> fieldList = new ArrayList<FieldInfo>();
@@ -101,11 +102,12 @@ public class TableParseUtil {
String fieldListTmp = tableSql.substring(tableSql.indexOf("(")+1, tableSql.lastIndexOf(")")); String fieldListTmp = tableSql.substring(tableSql.indexOf("(")+1, tableSql.lastIndexOf(")"));
// 匹配 comment替换备注里的小逗号, 防止不小心被当成切割符号切割 // 匹配 comment替换备注里的小逗号, 防止不小心被当成切割符号切割
Matcher matcher = Pattern.compile("\\ comment '(.*?)\\'").matcher(fieldListTmp); // "\\{(.*?)\\}" Matcher matcher = Pattern.compile("\\ comment `(.*?)\\`").matcher(fieldListTmp); // "\\{(.*?)\\}"
while(matcher.find()){ while(matcher.find()){
String commentTmp = matcher.group(); String commentTmp = matcher.group();
commentTmp = commentTmp.replaceAll("\\ comment '|\\'", ""); // "\\{|\\}" //2018-9-27 zhengk 不替换只处理支持COMMENT评论里面多种注释
//commentTmp = commentTmp.replaceAll("\\ comment `|\\`", " "); // "\\{|\\}"
if (commentTmp.contains(",")) { if (commentTmp.contains(",")) {
String commentTmpFinal = commentTmp.replaceAll(",", ""); String commentTmpFinal = commentTmp.replaceAll(",", "");
@@ -122,7 +124,7 @@ public class TableParseUtil {
columnLine = columnLine.replaceAll("\n","").replaceAll("\t","").trim(); columnLine = columnLine.replaceAll("\n","").replaceAll("\t","").trim();
// `userid` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID', // `userid` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
// 2018-9-18 zhengk 修改为contains提升匹配率和匹配不按照规矩出牌的语句 // 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("storage")&&!columnLine.contains("pctincrease")
&&!columnLine.contains("buffer_pool")&&!columnLine.contains("tablespace") &&!columnLine.contains("buffer_pool")&&!columnLine.contains("tablespace")
&&!(columnLine.contains("primary")&&i>3)){ &&!(columnLine.contains("primary")&&i>3)){
@@ -171,6 +173,10 @@ public class TableParseUtil {
if (commentTmp.contains("`") || commentTmp.indexOf("`")!=commentTmp.lastIndexOf("`")) { if (commentTmp.contains("`") || commentTmp.indexOf("`")!=commentTmp.lastIndexOf("`")) {
commentTmp = commentTmp.substring(commentTmp.indexOf("`")+1, commentTmp.lastIndexOf("`")); commentTmp = commentTmp.substring(commentTmp.indexOf("`")+1, commentTmp.lastIndexOf("`"));
} }
//解决最后一句是评论,无主键且连着)的问题:album_id int(3) default '1' null comment '相册id0 代表头像 1代表照片墙')
if(commentTmp.contains(")")){
commentTmp = commentTmp.substring(0, commentTmp.lastIndexOf(")"));
}
fieldComment = commentTmp; fieldComment = commentTmp;
}else if(tableSql.contains("comment on column")&&tableSql.contains("."+columnName+" is `")){ }else if(tableSql.contains("comment on column")&&tableSql.contains("."+columnName+" is `")){
//新增对pgsql/oracle的字段备注支持 //新增对pgsql/oracle的字段备注支持