diff --git a/cloud-etl-server/src/main/java/com/muyu/cloud/etl/mysql/MySqlDataSource.java b/cloud-etl-server/src/main/java/com/muyu/cloud/etl/mysql/MySqlDataSource.java index 47a0125..26e6a5d 100644 --- a/cloud-etl-server/src/main/java/com/muyu/cloud/etl/mysql/MySqlDataSource.java +++ b/cloud-etl-server/src/main/java/com/muyu/cloud/etl/mysql/MySqlDataSource.java @@ -1,13 +1,13 @@ package com.muyu.cloud.etl.mysql; -import com.muyu.Hikari.HikariPool; import com.muyu.cloud.etl.service.SourceService; import com.muyu.common.core.utils.SpringUtils; import com.muyu.data.base.BaseDataAbsSource; import com.muyu.domain.DataValue; import com.muyu.domain.Source; import com.muyu.domain.enums.DataType; +import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; import lombok.extern.log4j.Log4j2; import org.springframework.stereotype.Component; @@ -79,36 +79,40 @@ public class MySqlDataSource extends BaseDataAbsSource { // } return null; } -// 第一种方法 + + + @Override public DataValue[][] getRows () { + MySqlQuery query = getQuery(); Integer one = Math.toIntExact(query.getOne()); Integer two = query.getTwo(); String sql = query.getSql(); Long dataSourceId = query.getDataSourceId(); ConcurrentHashMap map = new ConcurrentHashMap<>(); + Source dataSources = sourceService.getById(dataSourceId); - HikariDataSource hikariDataSource = HikariPool.getHikariDataSource(dataSources); - - Connection conn = null; -// try { -// -// } catch (SQLException e) { -// throw new RuntimeException(e); -// } - log.info("one------------"+one+"------------two"+two); + HikariConfig hikariConfig = new HikariConfig(); + hikariConfig.setPoolName("HikariCP 连接池"); + hikariConfig.setDriverClassName(dataSources.getDriverName()); + hikariConfig.setJdbcUrl(dataSources.getUrl()); // 修正这里 + hikariConfig.setUsername(dataSources.getUsername()); + hikariConfig.setPassword(dataSources.getPassword()); + hikariConfig.setMinimumIdle(2); + hikariConfig.setMaximumPoolSize(10); DataValue[][] dataValues = new DataValue[one][two]; - try { - conn = hikariDataSource.getConnection(); + HikariDataSource hikariDataSource = new HikariDataSource(hikariConfig); + try { + Connection conn = hikariDataSource.getConnection(); PreparedStatement preparedStatement = conn.prepareStatement(sql); ResultSet resultSet = preparedStatement.executeQuery(); ResultSetMetaData metaData = resultSet.getMetaData(); int columnCount = metaData.getColumnCount(); - int c = 1; + int c = 0; while (resultSet.next()){ for (int i = 1; i <= columnCount; i++) { if (resultSet.isFirst()){ @@ -129,13 +133,8 @@ public class MySqlDataSource extends BaseDataAbsSource { .type(DataType.findBySqlType(columnTypeName)) .build(); map.put(i,build); - -// if (c <= one && i <= columnCount) { -// dataValues[c - 1][i - 1] = build; -// } dataValues[c][i-1]=build; }else { - DataValue build = DataValue.builder() .key(metaData.getColumnName(i)) .label(map.get(i).getLabel()) @@ -143,20 +142,15 @@ public class MySqlDataSource extends BaseDataAbsSource { .type(map.get(i).getType()) .build(); dataValues[c][i-1]=build; -// if (c <= one && i <= columnCount) { -// dataValues[c - 1][i - 1] = build; -// } } } -// if (c <= one) { -// c++; -// } c++; } + } catch (SQLException e) { throw new RuntimeException(e); }finally { - close(hikariDataSource); + close(hikariDataSource); // 关闭数据源 } return dataValues; @@ -169,6 +163,98 @@ public class MySqlDataSource extends BaseDataAbsSource { + + +// 第一种方法 +// @Override +// public DataValue[][] getRows () { +// MySqlQuery query = getQuery(); +// Integer one = Math.toIntExact(query.getOne()); +// Integer two = query.getTwo(); +// String sql = query.getSql(); +// Long dataSourceId = query.getDataSourceId(); +// ConcurrentHashMap map = new ConcurrentHashMap<>(); +// Source dataSources = sourceService.getById(dataSourceId); +// +// HikariDataSource hikariDataSource = HikariPool.getHikariDataSource(dataSources); +// +// Connection conn = null; +//// try { +//// +//// } catch (SQLException e) { +//// throw new RuntimeException(e); +//// } +// log.info("one------------"+one+"------------two"+two); +// +// DataValue[][] dataValues = new DataValue[one][two]; +// try { +// conn = hikariDataSource.getConnection(); +// +// PreparedStatement preparedStatement = conn.prepareStatement(sql); +// ResultSet resultSet = preparedStatement.executeQuery(); +// ResultSetMetaData metaData = resultSet.getMetaData(); +// int columnCount = metaData.getColumnCount(); +// int c = 1; +// while (resultSet.next()){ +// for (int i = 1; i <= columnCount; i++) { +// if (resultSet.isFirst()){ +// String columnTypeName = metaData.getColumnTypeName(i); +// DatabaseMetaData metaDataColumns = conn.getMetaData(); +// ResultSet columns = metaDataColumns.getColumns(null, null, metaData.getTableName(i), metaData.getColumnName(i)); +// String remarks =null; +// +// while (columns.next()){ +// remarks = columns.getString("REMARKS"); +// +// log.info("字段备注:"+remarks); +// } +// DataValue build = DataValue.builder() +// .key(metaData.getColumnName(i)) +// .label(remarks) +// .value(resultSet.getObject(i, DataType.convertType(columnTypeName))) +// .type(DataType.findBySqlType(columnTypeName)) +// .build(); +// map.put(i,build); +// +//// if (c <= one && i <= columnCount) { +//// dataValues[c - 1][i - 1] = build; +//// } +// dataValues[c][i-1]=build; +// }else { +// +// DataValue build = DataValue.builder() +// .key(metaData.getColumnName(i)) +// .label(map.get(i).getLabel()) +// .value(resultSet.getObject(i, map.get(i).getType().getTargetType())) +// .type(map.get(i).getType()) +// .build(); +// dataValues[c][i-1]=build; +//// if (c <= one && i <= columnCount) { +//// dataValues[c - 1][i - 1] = build; +//// } +// } +// } +//// if (c <= one) { +//// c++; +//// } +// c++; +// } +// } catch (SQLException e) { +// throw new RuntimeException(e); +// }finally { +// close(hikariDataSource); +// } +// +// return dataValues; +// } +// private static void close(HikariDataSource dataSource) { +// if (dataSource != null) { +// dataSource.close(); +// } +// } +//第一种方法 + + // @Override // public DataValue[][] getRows() { // MySqlQuery query = getQuery();