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 26e6a5d..01747b2 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; @@ -81,120 +81,39 @@ 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); - - 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]; - - 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 = 0; - 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); - 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; - } - } - 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(); // 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(12); // // 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()){ @@ -215,13 +134,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()) @@ -229,29 +143,117 @@ 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; // } +// // private static void close(HikariDataSource dataSource) { // if (dataSource != null) { // dataSource.close(); // } // } + + + + + +// 第一种方法 + @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(); + } + } //第一种方法