mirror of
https://github.com/moshowgame/SpringBootCodeGenerator.git
synced 2026-03-22 07:28:25 +08:00
新增insert-sql模式,支持对"insert into table (xxx) values (xxx)"语句进行处理,生成java代码(感谢三叔的建议)
This commit is contained in:
@@ -12,10 +12,10 @@
|
|||||||
- √ 用DDL-SQL语句生成JPA/JdbcTemplate/Mybatis/MybatisPlus/BeetlSQL相关代码.
|
- √ 用DDL-SQL语句生成JPA/JdbcTemplate/Mybatis/MybatisPlus/BeetlSQL相关代码.
|
||||||
|
|
||||||
# Advantage
|
# Advantage
|
||||||
|
- 支持DDL SQL/INSERT SQL/SIMPLE JSON生成模式
|
||||||
- 自动记忆最近生成的内容,最多保留9个
|
- 自动记忆最近生成的内容,最多保留9个
|
||||||
- 支持特殊字符模板(`#`请用`井`代替;`$`请用`¥`代替)
|
- 支持特殊字符模板(`#`请用`井`代替;`$`请用`¥`代替)
|
||||||
- 提供众多通用模板,易于使用,复制粘贴加简单修改即可完成CRUD操作
|
- 提供众多通用模板,易于使用,复制粘贴加简单修改即可完成CRUD操作
|
||||||
- 支持JSON逆向生成(只支持简单的一级树)
|
|
||||||
|
|
||||||
|
|
||||||
# Url
|
# 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的建议)。|
|
|20200517|1.代码重构!异常处理优化,Freemarker相关工具类优化,简化模板生成部分,通过template.json来配置需要生成的模板,不需要配置java文件。 2.修复包含comment关键字时注释无法识别的问题。(感谢@1nchaos的反馈) 3.赞赏优化,感谢大家的赞赏 4.新增mapper2(Mybatis-Annotation模板)(感谢@baisi525和@CHKEGit的建议)。|
|
||||||
|20200503|1.优化对特殊字符的处理,对于包含#和$等特殊字符的,在模板使用井和¥代替便可,escapeString方法会自动处理<br> 2.优化mybatisplus实体类相关(感谢@chunchengmeigui的反馈) 3.修优化对所有类型的判断(感谢@cnlw的反馈) 4.移除swagger-entity,该功能已经包含在‘swagger-ui’的下拉选项中 5.升级hutool和lombok版本|
|
|20200503|1.优化对特殊字符的处理,对于包含#和$等特殊字符的,在模板使用井和¥代替便可,escapeString方法会自动处理<br> 2.优化mybatisplus实体类相关(感谢@chunchengmeigui的反馈) 3.修优化对所有类型的判断(感谢@cnlw的反馈) 4.移除swagger-entity,该功能已经包含在‘swagger-ui’的下拉选项中 5.升级hutool和lombok版本|
|
||||||
|20200306|1.提交一套layuimini+mybatisplus的模板. 2.修复mybatisplus一些相关问题. |
|
|20200306|1.提交一套layuimini+mybatisplus的模板. 2.修复mybatisplus一些相关问题. |
|
||||||
|
|||||||
@@ -45,6 +45,8 @@ public class IndexController {
|
|||||||
switch (paramInfo.getDataType()){
|
switch (paramInfo.getDataType()){
|
||||||
//JSON模式:parse field from json string
|
//JSON模式:parse field from json string
|
||||||
case "json":classInfo = TableParseUtil.processJsonToClassInfo(paramInfo);break;
|
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
|
//正则表达式模式(非完善版本):parse sql by regex
|
||||||
case "sql-regex":classInfo = TableParseUtil.processTableToClassInfoByRegex(paramInfo);break;
|
case "sql-regex":classInfo = TableParseUtil.processTableToClassInfoByRegex(paramInfo);break;
|
||||||
//默认模式:default parse sql by java
|
//默认模式:default parse sql by java
|
||||||
|
|||||||
@@ -11,8 +11,10 @@ import com.softdev.system.generator.entity.ParamInfo;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
@@ -421,4 +423,61 @@ public class TableParseUtil {
|
|||||||
}
|
}
|
||||||
return fieldList;
|
return fieldList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static ClassInfo processInsertSqlToClassInfo(ParamInfo paramInfo) {
|
||||||
|
// field List
|
||||||
|
List<FieldInfo> fieldList = new ArrayList<FieldInfo>();
|
||||||
|
//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 (?<tableName>.*) \\((?<columnsSQL>.*)\\)";
|
||||||
|
//String DDL_PATTEN_STR="\\s*create\\s+table\\s+(?<tableName>\\S+)[^\\(]*\\((?<columnsSQL>[\\s\\S]+)\\)[^\\)]+?(comment\\s*(=|on\\s+table)\\s*'(?<tableComment>.*?)'\\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<String> 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()<valueList.size()){
|
||||||
|
fieldInfo2.setFieldComment(column+" , eg."+valueList.get(n.get()));
|
||||||
|
}
|
||||||
|
fieldList.add(fieldInfo2);
|
||||||
|
n.getAndIncrement();
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
if(fieldList.size()<1){
|
||||||
|
throw new CodeGenerateException("INSERT SQL解析失败");
|
||||||
|
}
|
||||||
|
codeJavaInfo.setFieldList(fieldList);
|
||||||
|
return codeJavaInfo;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"version": "20200517"}
|
{"version": "20200522"}
|
||||||
@@ -245,9 +245,10 @@
|
|||||||
</div>
|
</div>
|
||||||
<select type="text" class="form-control" id="dataType"
|
<select type="text" class="form-control" id="dataType"
|
||||||
name="dataType">
|
name="dataType">
|
||||||
<option value="sql">sql</option>
|
<option value="sql">ddl-sql</option>
|
||||||
<option value="json">json</option>
|
<option value="json">json</option>
|
||||||
<option value="sql-regex">sql-regex</option>
|
<option value="insert-sql">insert-sql</option>
|
||||||
|
<#--<option value="sql-regex">sql-regex</option>-->
|
||||||
</select>
|
</select>
|
||||||
<div class="input-group-prepend">
|
<div class="input-group-prepend">
|
||||||
<span class="input-group-text">tinyint转换类型</span>
|
<span class="input-group-text">tinyint转换类型</span>
|
||||||
|
|||||||
Reference in New Issue
Block a user