From 749f86cec7f12796d931912d6cf77827e2e89890 Mon Sep 17 00:00:00 2001 From: lwj <3529558005@qq.com> Date: Mon, 9 Sep 2024 15:42:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9F=A5=E8=AF=A2=E8=AF=AD?= =?UTF-8?q?=E5=8F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../muyu/cloud/etl/mysql/MySqlDataSource.java | 177 +++++++++++++----- 1 file changed, 129 insertions(+), 48 deletions(-) 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 e8e1826..162efb8 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; @@ -257,43 +257,139 @@ 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; +// PreparedStatement preparedStatement = null; +// ResultSet resultSet = null; +// +// try { +// conn = hikariDataSource.getConnection(); +// preparedStatement = conn.prepareStatement(sql); +// resultSet = preparedStatement.executeQuery(); +// ResultSetMetaData metaData = resultSet.getMetaData(); +// int columnCount = metaData.getColumnCount(); +// int c = 1; +// +// DataValue[][] dataValues = new DataValue[one][two]; +// +// 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"); +// } +// 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; +// } +// } 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(); +// if (c <= one && i <= columnCount) { +// dataValues[c - 1][i - 1] = build; +// } +// } +// } +// if (c <= one) { +// c++; +// } +// } +// log.info("返回数据{}",dataValues.length); +// return dataValues; +// } catch (SQLException e) { +// throw new RuntimeException(e); +// } finally { +// close(conn, preparedStatement, resultSet); +// } +// } +// +// private static void close(Connection conn, PreparedStatement preparedStatement, ResultSet resultSet) { +// try { +// if (resultSet != null) { +// resultSet.close(); +// } +// if (preparedStatement != null) { +// preparedStatement.close(); +// } +// if (conn != null) { +// conn.close(); +// } +// } catch (SQLException e) { +//// log.log(Level.SEVERE, "Error closing resources", e); +// } +// } + + + //壮法 @Override - public DataValue[][] getRows() { + 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); + 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); - Connection conn = null; - PreparedStatement preparedStatement = null; - ResultSet resultSet = null; + DataValue[][] dataValues = new DataValue[one][two]; + HikariDataSource hikariDataSource = new HikariDataSource(hikariConfig); try { - conn = hikariDataSource.getConnection(); - preparedStatement = conn.prepareStatement(sql); - resultSet = preparedStatement.executeQuery(); + Connection conn = hikariDataSource.getConnection(); + PreparedStatement preparedStatement = conn.prepareStatement(sql); + ResultSet resultSet = preparedStatement.executeQuery(); ResultSetMetaData metaData = resultSet.getMetaData(); int columnCount = metaData.getColumnCount(); - int c = 1; - - DataValue[][] dataValues = new DataValue[one][two]; - - while (resultSet.next()) { + int c = 0; + while (resultSet.next()){ for (int i = 1; i <= columnCount; i++) { - log.info("喜欢次数为===={}",i); - if (resultSet.isFirst()) { + 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; + String remarks =null; - while (columns.next()) { + while (columns.next()){ remarks = columns.getString("REMARKS"); + + log.info("字段备注:"+remarks); } DataValue build = DataValue.builder() .key(metaData.getColumnName(i)) @@ -301,49 +397,34 @@ public class MySqlDataSource extends BaseDataAbsSource { .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; - } - } else { + 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(); - if (c <= one && i <= columnCount) { - dataValues[c - 1][i - 1] = build; - } + dataValues[c][i-1]=build; } } - if (c <= one) { - c++; - } + c++; } - log.info("返回数据{}",dataValues.length); - return dataValues; + } catch (SQLException e) { throw new RuntimeException(e); - } finally { - close(conn, preparedStatement, resultSet); + }finally { + close(hikariDataSource); // 关闭数据源 + } + + return dataValues; + } + private static void close(HikariDataSource dataSource) { + if (dataSource != null) { + dataSource.close(); } } - private static void close(Connection conn, PreparedStatement preparedStatement, ResultSet resultSet) { - try { - if (resultSet != null) { - resultSet.close(); - } - if (preparedStatement != null) { - preparedStatement.close(); - } - if (conn != null) { - conn.close(); - } - } catch (SQLException e) { -// log.log(Level.SEVERE, "Error closing resources", e); - } - } }