From 685b952c8f5c34fdcfa2092483289ebf91f726a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moshow=E9=83=91=E9=94=B4?= Date: Sun, 7 Dec 2025 21:52:50 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96oracle=E8=AF=AD=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/parser/SqlParserServiceImpl.java | 8 +++++++- .../softdev/system/generator/util/mysqlJavaTypeUtil.java | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/softdev/system/generator/service/impl/parser/SqlParserServiceImpl.java b/src/main/java/com/softdev/system/generator/service/impl/parser/SqlParserServiceImpl.java index 0367a6f..9228dfd 100644 --- a/src/main/java/com/softdev/system/generator/service/impl/parser/SqlParserServiceImpl.java +++ b/src/main/java/com/softdev/system/generator/service/impl/parser/SqlParserServiceImpl.java @@ -351,7 +351,10 @@ public class SqlParserServiceImpl implements SqlParserService { } else { fieldName = columnName; } - columnLine = columnLine.substring(columnLine.indexOf("`") + 1).trim(); + // 修复Oracle字段名不带引号的情况 + if (columnLine.contains("`")) { + columnLine = columnLine.substring(columnLine.indexOf("`") + 1).trim(); + } //2025-03-16 修复由于类型大写导致无法转换的问题 String mysqlType = columnLine.split("\\s+")[1].toLowerCase(); if(mysqlType.contains("(")){ @@ -400,6 +403,9 @@ public class SqlParserServiceImpl implements SqlParserService { commentTmp = commentTmp.substring(0, commentTmp.lastIndexOf(")") + 1); } fieldComment = commentTmp; + } else if (columnLine.contains("--")) { + // 支持Oracle风格的注释(--) + fieldComment = columnLine.substring(columnLine.indexOf("--") + 2).trim(); } else { //修复comment不存在导致报错的问题 fieldComment = columnName; diff --git a/src/main/java/com/softdev/system/generator/util/mysqlJavaTypeUtil.java b/src/main/java/com/softdev/system/generator/util/mysqlJavaTypeUtil.java index deeefa1..53f95fc 100644 --- a/src/main/java/com/softdev/system/generator/util/mysqlJavaTypeUtil.java +++ b/src/main/java/com/softdev/system/generator/util/mysqlJavaTypeUtil.java @@ -27,6 +27,7 @@ public final class mysqlJavaTypeUtil { //字符串 mysqlJavaTypeMap.put("char","String"); mysqlJavaTypeMap.put("varchar","String"); + mysqlJavaTypeMap.put("varchar2","String"); // Oracle类型 mysqlJavaTypeMap.put("tinytext","String"); mysqlJavaTypeMap.put("text","String"); mysqlJavaTypeMap.put("mediumtext","String"); @@ -35,6 +36,8 @@ public final class mysqlJavaTypeUtil { mysqlJavaTypeMap.put("date","Date"); mysqlJavaTypeMap.put("datetime","Date"); mysqlJavaTypeMap.put("timestamp","Date"); + // 数字类型 - Oracle增强 + mysqlJavaTypeMap.put("number","BigDecimal"); // Oracle的NUMBER类型默认映射为BigDecimal,支持精度 mysqlSwaggerTypeMap.put("bigint","integer"); @@ -46,7 +49,10 @@ public final class mysqlJavaTypeUtil { mysqlSwaggerTypeMap.put("boolean","boolean"); mysqlSwaggerTypeMap.put("float","number"); mysqlSwaggerTypeMap.put("double","number"); - mysqlSwaggerTypeMap.put("decimal","Double"); + mysqlSwaggerTypeMap.put("decimal","number"); + // Oracle类型 + mysqlSwaggerTypeMap.put("varchar2","string"); + mysqlSwaggerTypeMap.put("number","number"); } public static HashMap getMysqlJavaTypeMap() {