Skip to content

Commit 685b952

Browse files
committed
优化oracle语法
1 parent 1998225 commit 685b952

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

src/main/java/com/softdev/system/generator/service/impl/parser/SqlParserServiceImpl.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,10 @@ public ClassInfo processTableIntoClassInfo(ParamInfo paramInfo) throws Exception
351351
} else {
352352
fieldName = columnName;
353353
}
354-
columnLine = columnLine.substring(columnLine.indexOf("`") + 1).trim();
354+
// 修复Oracle字段名不带引号的情况
355+
if (columnLine.contains("`")) {
356+
columnLine = columnLine.substring(columnLine.indexOf("`") + 1).trim();
357+
}
355358
//2025-03-16 修复由于类型大写导致无法转换的问题
356359
String mysqlType = columnLine.split("\\s+")[1].toLowerCase();
357360
if(mysqlType.contains("(")){
@@ -400,6 +403,9 @@ public ClassInfo processTableIntoClassInfo(ParamInfo paramInfo) throws Exception
400403
commentTmp = commentTmp.substring(0, commentTmp.lastIndexOf(")") + 1);
401404
}
402405
fieldComment = commentTmp;
406+
} else if (columnLine.contains("--")) {
407+
// 支持Oracle风格的注释(--)
408+
fieldComment = columnLine.substring(columnLine.indexOf("--") + 2).trim();
403409
} else {
404410
//修复comment不存在导致报错的问题
405411
fieldComment = columnName;

src/main/java/com/softdev/system/generator/util/mysqlJavaTypeUtil.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ public final class mysqlJavaTypeUtil {
2727
//字符串
2828
mysqlJavaTypeMap.put("char","String");
2929
mysqlJavaTypeMap.put("varchar","String");
30+
mysqlJavaTypeMap.put("varchar2","String"); // Oracle类型
3031
mysqlJavaTypeMap.put("tinytext","String");
3132
mysqlJavaTypeMap.put("text","String");
3233
mysqlJavaTypeMap.put("mediumtext","String");
@@ -35,6 +36,8 @@ public final class mysqlJavaTypeUtil {
3536
mysqlJavaTypeMap.put("date","Date");
3637
mysqlJavaTypeMap.put("datetime","Date");
3738
mysqlJavaTypeMap.put("timestamp","Date");
39+
// 数字类型 - Oracle增强
40+
mysqlJavaTypeMap.put("number","BigDecimal"); // Oracle的NUMBER类型默认映射为BigDecimal,支持精度
3841

3942

4043
mysqlSwaggerTypeMap.put("bigint","integer");
@@ -46,7 +49,10 @@ public final class mysqlJavaTypeUtil {
4649
mysqlSwaggerTypeMap.put("boolean","boolean");
4750
mysqlSwaggerTypeMap.put("float","number");
4851
mysqlSwaggerTypeMap.put("double","number");
49-
mysqlSwaggerTypeMap.put("decimal","Double");
52+
mysqlSwaggerTypeMap.put("decimal","number");
53+
// Oracle类型
54+
mysqlSwaggerTypeMap.put("varchar2","string");
55+
mysqlSwaggerTypeMap.put("number","number");
5056
}
5157

5258
public static HashMap<String, String> getMysqlJavaTypeMap() {

0 commit comments

Comments
 (0)