数据资产(完善)

master
yaoxin 2024-04-21 11:51:01 +08:00
parent 595299ec50
commit 9e421b2c4d
3 changed files with 67 additions and 6 deletions

View File

@ -20,4 +20,6 @@ import java.util.Map;
public class AssetsModule {
private HashMap<String, String> structure;
private List<Map<String, VTClass>> kvtList;
private List<TableAssets> tableAssets;
}

View File

@ -0,0 +1,22 @@
package com.muyu.etl.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @ClassName TableAssets
* @Description
* @Author Xin.Yao
* @Date 2024/4/21 11:20
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TableAssets {
private String Field;
private String Type;
private String Null;
private String Key;
private String Default;
}

View File

@ -10,6 +10,7 @@ import com.muyu.common.core.domain.Result;
import com.muyu.common.core.utils.DateUtils;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.etl.domain.AssetsModule;
import com.muyu.etl.domain.TableAssets;
import com.muyu.etl.domain.VTClass;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -211,14 +212,54 @@ public class DataSourceServiceImpl implements IDataSourceService
return assetsModule;
}
public List<TableAssets> getTableAssets(DataSource dataSource){
String user = dataSource.getUsername();
String password = dataSource.getPassword();
String jdbcDriver = "com.mysql.cj.jdbc.Driver";
String jdbcUrl = "jdbc:mysql://"+dataSource.getLinkAddress()+":"+dataSource.getPort()+"/"+dataSource.getDatabaseName();
Connection conn = null;
List<TableAssets> tableAssets = new ArrayList<>();
try {
Class.forName(jdbcDriver);
conn = DriverManager.getConnection(jdbcUrl, user, password);
} catch (SQLException | ClassNotFoundException e) {
throw new RuntimeException(e);
}
try {
Class.forName(jdbcDriver);
conn = DriverManager.getConnection(jdbcUrl, user, password);
} catch (SQLException | ClassNotFoundException e) {
throw new RuntimeException(e);
}
try {
PreparedStatement pst = conn.prepareStatement("DESCRIBE "+dataSource.getTableName());
ResultSet resultSet = pst.executeQuery();
ResultSetMetaData rsd = resultSet.getMetaData();
while (resultSet.next()) {
TableAssets tableAsset = new TableAssets();
tableAsset.setField(resultSet.getString("Field"));
tableAsset.setType(resultSet.getString("Type"));
tableAsset.setNull(resultSet.getString("Null"));
tableAsset.setKey(resultSet.getString("Key"));
tableAsset.setDefault(resultSet.getString("Default"));
tableAssets.add(tableAsset);
}
pst.close();
} catch(SQLException e) {
e.printStackTrace();
}
return tableAssets;
}
public AssetsModule getAssets(DataSource dataSource){
String user = dataSource.getUsername();
String password = dataSource.getPassword();
String jdbcDriver = "com.mysql.cj.jdbc.Driver";
String jdbcUrl = "jdbc:mysql://"+dataSource.getLinkAddress()+":"+dataSource.getPort()+"/"+dataSource.getDatabaseName();
Connection conn = null;
List<Map<String, VTClass>> kvtList = new ArrayList<>();
HashMap<String, String> map = new HashMap<>();
List<TableAssets> tableAssets = getTableAssets(dataSource);
try {
Class.forName(jdbcDriver);
conn = DriverManager.getConnection(jdbcUrl, user, password);
@ -231,10 +272,6 @@ public class DataSourceServiceImpl implements IDataSourceService
ResultSetMetaData rsd = resultSet.getMetaData();
for(int i = 1; i <= rsd.getColumnCount(); i++) {
String substring = rsd.getColumnClassName(i).substring(rsd.getColumnClassName(i).indexOf("java.lang.") + 10);
System.out.print("java类型"+substring);
System.out.print(" 数据库类型:"+rsd.getColumnTypeName(i));
System.out.print(" 字段名称:"+rsd.getColumnName(i));
System.out.println();
map.put(rsd.getColumnName(i),substring);
}
pst.close();
@ -242,8 +279,8 @@ public class DataSourceServiceImpl implements IDataSourceService
e.printStackTrace();
}
AssetsModule assetsModule = new AssetsModule();
assetsModule.setKvtList(kvtList);
assetsModule.setStructure(map);
assetsModule.setTableAssets(tableAssets);
return assetsModule;
}