muyu-source/muyu-source-client/src/main/java/com/muyu/config/SourceClientConfig.java

85 lines
3.4 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.muyu.config;
import cn.hutool.core.math.Arrangement;
import com.muyu.common.core.domain.Result;
import com.muyu.connection.DataSourceConfig;
import com.muyu.source.domain.Children;
import com.muyu.source.domain.DataSource;
import com.muyu.source.domain.DataType;
import com.muyu.source.domain.model.DataModel;
import com.muyu.source.remote.RemoteChildrenService;
import com.muyu.source.remote.RemoteDataSourceService;
import com.muyu.source.remote.RemoteDataTypeService;
import jakarta.annotation.Resource;
import org.springframework.context.annotation.ComponentScan;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @author Lenovo
* @ ToolIntelliJ IDEA
* @ AuthorCHX
* @ Date2024-08-22-14:33
* @ Version1.0
* @ Description数据接入客户端配置类
*/
@ComponentScan
public class SourceClientConfig {
@Resource
private RemoteDataSourceService remoteDataSourceService;
@Resource
private RemoteChildrenService remoteChildrenService;
public List<List<DataModel>> getDataModel(Long id) {
List<List<DataModel>> list = new ArrayList<>();
//根据ID查询出表结构的数据
Result<Children> childrenResult = remoteChildrenService.getChildren(id);
Children children = childrenResult.getData();
//根据ID查询出数据源的数据
Result<DataSource> dataSourceResult = remoteDataSourceService.getDataSource(children.getAssetId());
DataSource dataSource = dataSourceResult.getData();
String sql = "";
if ("MySql".equals(dataSource.getDataType())) {
sql = "SELECT * FROM " + children.getName();
}
try {
//调用连接池获取连接
Connection connection = DataSourceConfig.getDataSource(dataSource.getId());
PreparedStatement preparedStatement = connection.prepareStatement(sql);
ResultSet resultSet = preparedStatement.executeQuery();
ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
while (resultSet.next()) {
List<DataModel> dataModels = new ArrayList<>();
for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
//获取列名 字段名 key
String columnName = resultSetMetaData.getColumnName(i);
//获取字段的值 value
Object value = resultSet.getObject(columnName);
//获取列的类型 字段的类型 type
String columnTypeName = resultSetMetaData.getColumnTypeName(i);
//获取列的标题 label
String columnLabel = resultSetMetaData.getColumnLabel(i);
// java类型
String columnClassName = resultSetMetaData.getColumnClassName(i);
DataModel dataModel = DataModel.builder()
.key(columnName)
.label(columnLabel)
.type(columnTypeName)
.value(value)
.build();
dataModels.add(dataModel);
}
list.add(dataModels);
}
//归还连接
DataSourceConfig.returnConnection(connection);
} catch (SQLException e) {
throw new RuntimeException(e);
}
return list;
}
}