diff --git a/cloud-property-common/src/main/java/com/muyu/common/domain/DataValue.java b/cloud-property-common/src/main/java/com/muyu/common/domain/DataValue.java index c76be9e..e44b245 100644 --- a/cloud-property-common/src/main/java/com/muyu/common/domain/DataValue.java +++ b/cloud-property-common/src/main/java/com/muyu/common/domain/DataValue.java @@ -1,5 +1,6 @@ package com.muyu.common.domain; +import com.muyu.common.domain.enums.DataType; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -27,7 +28,7 @@ public class DataValue { private String label; //类型 - private String type; + private DataType type; /** * 值 diff --git a/cloud-property-common/src/main/java/com/muyu/common/domain/enums/DataType.java b/cloud-property-common/src/main/java/com/muyu/common/domain/enums/DataType.java index 5d4e90a..b5d2203 100644 --- a/cloud-property-common/src/main/java/com/muyu/common/domain/enums/DataType.java +++ b/cloud-property-common/src/main/java/com/muyu/common/domain/enums/DataType.java @@ -9,9 +9,11 @@ import java.util.Date; * @Project:cloud-etl-property * @name:DataType * @Date:2024/8/29 21:33 + * + * 定义一个枚举,用于映射数据库类型到Java类型 */ public enum DataType { - + // 定义各种数据库类型到Java类型的映射 VARCHAR("varchar",String.class,"String"), BIGINT("bigint", Long.class,"Long"), INT("int", Integer.class,"Integer"), @@ -20,15 +22,31 @@ public enum DataType { TEXT("text", String.class,"String"), DOUBLE("double", Double.class,"Double"); + + // 数据库源类型 private final String sourceType; - + // 映射到的Java类类型 private final Class targetType; - + // Java类型的字符串表示 private final String javaType; - public static Class convertType(String type){ + public String getSourceType() { + return sourceType; + } + + public Class getTargetType() { + return targetType; + } + + public String getJavaType() { + return javaType; + } + + + + public static Class convertType(String type){ for (DataType dataType : DataType.values()) { if (dataType.sourceType.equalsIgnoreCase(type)){ return dataType.targetType; @@ -37,8 +55,16 @@ public enum DataType { return String.class; } - public static String convertTypeString(String type){ + public static DataType findBySqlType(String sqlType){ + for (DataType dataType : DataType.values()) { + if (dataType.getSourceType().equalsIgnoreCase(sqlType)){ + return dataType; + } + } + return VARCHAR; + } + public static String convertTypeString(String type){ for (DataType dataType : DataType.values()) { if (dataType.sourceType.equalsIgnoreCase(type)){ return dataType.javaType; diff --git a/cloud-property-server/src/main/java/com/muyu/server/service/impl/DataRunNameServiceImpl.java b/cloud-property-server/src/main/java/com/muyu/server/service/impl/DataRunNameServiceImpl.java index b6e05a4..340b7d4 100644 --- a/cloud-property-server/src/main/java/com/muyu/server/service/impl/DataRunNameServiceImpl.java +++ b/cloud-property-server/src/main/java/com/muyu/server/service/impl/DataRunNameServiceImpl.java @@ -384,7 +384,7 @@ public class DataRunNameServiceImpl implements DataRunNameService { .key(metaData.getColumnName(i)) .label(remarks) .value(resultSet.getObject(i, DataType.convertType(columnTypeName))) - .type(DataType.convertTypeString(columnTypeName)) + .type(DataType.findBySqlType(columnTypeName)) .build(); list.add(build); map.put(i, build); @@ -392,8 +392,8 @@ public class DataRunNameServiceImpl implements DataRunNameService { DataValue build = DataValue.builder() .key(metaData.getColumnName(i)) .label(map.get(i).getLabel()) - .value(resultSet.getObject(i, DataType.convertType((String) map.get(i).getValue()))) - .type(DataType.convertTypeString(map.get(i).getType())) + .value(resultSet.getObject(i, map.get(i).getType().getTargetType())) + .type(map.get(i).getType()) .build(); list.add(build); }