diff --git a/README.md b/README.md
index d286c6d..074207d 100644
--- a/README.md
+++ b/README.md
@@ -12,10 +12,10 @@
- √ 用DDL-SQL语句生成JPA/JdbcTemplate/Mybatis/MybatisPlus/BeetlSQL相关代码.
# Advantage
+- 支持DDL SQL/INSERT SQL/SIMPLE JSON生成模式
- 自动记忆最近生成的内容,最多保留9个
- 支持特殊字符模板(`#`请用`井`代替;`$`请用`¥`代替)
- 提供众多通用模板,易于使用,复制粘贴加简单修改即可完成CRUD操作
-- 支持JSON逆向生成(只支持简单的一级树)
# Url
@@ -33,6 +33,7 @@
|更新日期|更新内容|
|-|-|
+|20200522|1.新增insert-sql模式,支持对"insert into table (xxx) values (xxx)"语句进行处理,生成java代码(感谢三叔的建议).|
|20200517|1.代码重构!异常处理优化,Freemarker相关工具类优化,简化模板生成部分,通过template.json来配置需要生成的模板,不需要配置java文件。 2.修复包含comment关键字时注释无法识别的问题。(感谢@1nchaos的反馈) 3.赞赏优化,感谢大家的赞赏 4.新增mapper2(Mybatis-Annotation模板)(感谢@baisi525和@CHKEGit的建议)。|
|20200503|1.优化对特殊字符的处理,对于包含#和$等特殊字符的,在模板使用井和¥代替便可,escapeString方法会自动处理
2.优化mybatisplus实体类相关(感谢@chunchengmeigui的反馈) 3.修优化对所有类型的判断(感谢@cnlw的反馈) 4.移除swagger-entity,该功能已经包含在‘swagger-ui’的下拉选项中 5.升级hutool和lombok版本|
|20200306|1.提交一套layuimini+mybatisplus的模板. 2.修复mybatisplus一些相关问题. |
diff --git a/generator-web/src/main/java/com/softdev/system/generator/controller/IndexController.java b/generator-web/src/main/java/com/softdev/system/generator/controller/IndexController.java
index 2b75849..bc2ffcf 100644
--- a/generator-web/src/main/java/com/softdev/system/generator/controller/IndexController.java
+++ b/generator-web/src/main/java/com/softdev/system/generator/controller/IndexController.java
@@ -45,6 +45,8 @@ public class IndexController {
switch (paramInfo.getDataType()){
//JSON模式:parse field from json string
case "json":classInfo = TableParseUtil.processJsonToClassInfo(paramInfo);break;
+ //INSERT SQL模式:parse field from insert sql
+ case "insert-sql":classInfo = TableParseUtil.processInsertSqlToClassInfo(paramInfo);break;
//正则表达式模式(非完善版本):parse sql by regex
case "sql-regex":classInfo = TableParseUtil.processTableToClassInfoByRegex(paramInfo);break;
//默认模式:default parse sql by java
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 424ef08..1544fa8 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
@@ -11,8 +11,10 @@ import com.softdev.system.generator.entity.ParamInfo;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Date;
import java.util.List;
+import java.util.concurrent.atomic.AtomicInteger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -421,4 +423,61 @@ public class TableParseUtil {
}
return fieldList;
}
+
+ public static ClassInfo processInsertSqlToClassInfo(ParamInfo paramInfo) {
+ // field List
+ List fieldList = new ArrayList();
+ //return classInfo
+ ClassInfo codeJavaInfo = new ClassInfo();
+
+ //get origin sql
+ String fieldSqlStr = paramInfo.getTableSql().toLowerCase().trim();
+ fieldSqlStr=fieldSqlStr.replaceAll(" "," ").replaceAll("\\\\n`","")
+ .replaceAll("\\+","").replaceAll("``","`").replaceAll("\\\\","");
+ String valueStr = fieldSqlStr.substring(fieldSqlStr.lastIndexOf("values")+6).replaceAll(" ","").replaceAll("\\(","").replaceAll("\\)","");
+ //get the string between insert into and values
+ fieldSqlStr=fieldSqlStr.substring(0,fieldSqlStr.lastIndexOf("values"));
+
+ System.out.println(fieldSqlStr);
+
+ String insertSqlPattenStr = "insert into (?.*) \\((?.*)\\)";
+ //String DDL_PATTEN_STR="\\s*create\\s+table\\s+(?\\S+)[^\\(]*\\((?[\\s\\S]+)\\)[^\\)]+?(comment\\s*(=|on\\s+table)\\s*'(?.*?)'\\s*;?)?$";
+
+ Matcher matcher1 = Pattern.compile(insertSqlPattenStr).matcher(fieldSqlStr);
+ while(matcher1.find()){
+
+ String tableName = matcher1.group("tableName");
+ //System.out.println("tableName:"+tableName);
+ codeJavaInfo.setClassName(tableName);
+ codeJavaInfo.setTableName(tableName);
+
+ String columnsSQL = matcher1.group("columnsSQL");
+ //System.out.println("columnsSQL:"+columnsSQL);
+
+ List valueList = new ArrayList<>();
+ //add values as comment
+ Arrays.stream(valueStr.split(",")).forEach(column->{
+ valueList.add(column);
+ });
+ AtomicInteger n= new AtomicInteger(0);
+ //add column to fleldList
+ Arrays.stream(columnsSQL.replaceAll(" ", "").split(",")).forEach(column->{
+ FieldInfo fieldInfo2 = new FieldInfo();
+ fieldInfo2.setFieldName(column);
+ fieldInfo2.setColumnName(column);
+ fieldInfo2.setFieldClass(String.class.getSimpleName());
+ if(n.get()
tinyint转换类型