diff --git a/auth-module/module-generator-code/src/main/java/com/auth/module/generator/core/dialect/MySqlDialect.java b/auth-module/module-generator-code/src/main/java/com/auth/module/generator/core/dialect/MySqlDialect.java index 912211e..fb78390 100644 --- a/auth-module/module-generator-code/src/main/java/com/auth/module/generator/core/dialect/MySqlDialect.java +++ b/auth-module/module-generator-code/src/main/java/com/auth/module/generator/core/dialect/MySqlDialect.java @@ -74,9 +74,27 @@ public class MySqlDialect implements DatabaseDialect { columnType = StringUtils.uncapitalize(columnType); return switch (columnType) { - case "double", "int", "long", "integer", "float", "decimal" -> "number"; - case "localDateTime", "date" -> "string"; - default -> columnType; + case "double", "int", "long", "integer", "float", "decimal", + "short", "byte", "bigInteger", "bigDecimal" -> "number"; + case "boolean" -> "boolean"; + case "char", "character", "string", "localDateTime", + "date", "localDate", "instant" -> "string"; + case "list", "set" -> "array"; + case "map" -> "record"; + case "void" -> "void"; + default -> { + // 处理泛型或自定义类型 + String subString = columnType.substring(columnType.indexOf("<") + 1, columnType.lastIndexOf(">")); + + if (columnType.startsWith("list<") || columnType.startsWith("set<")) { + yield "Array<" + convertToJavaScriptType(subString) + ">"; + } else if (columnType.startsWith("map<")) { + String[] parts = subString.split(","); + yield "Record<" + convertToJavaScriptType(parts[0].trim()) + "," + + convertToJavaScriptType(parts[1].trim()) + ">"; + } + yield columnType; // 默认返回原始类型 + } }; }