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 5a34ebd..9c0cb26 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 @@ -79,86 +79,9 @@ 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); -// 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); -// 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() { + public DataValue[][] getRows () { MySqlQuery query = getQuery(); Integer one = Math.toIntExact(query.getOne()); Integer two = query.getTwo(); @@ -169,31 +92,34 @@ public class MySqlDataSource extends BaseDataAbsSource { HikariDataSource hikariDataSource = HikariPool.getHikariDataSource(dataSources); - Connection conn = null; - PreparedStatement preparedStatement = null; - ResultSet resultSet = null; - + 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 = conn.prepareStatement(sql); - resultSet = preparedStatement.executeQuery(); + + 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()) { + while (resultSet.next()){ for (int i = 1; i <= columnCount; 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); + + log.info("字段备注:"+remarks); } DataValue build = DataValue.builder() .key(metaData.getColumnName(i)) @@ -201,47 +127,132 @@ 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); + + 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(); - if (c <= one && i <= columnCount) { - dataValues[c - 1][i - 1] = build; - } +// dataValues[c][i-1]=build; + if (c <= one && i <= columnCount) { + dataValues[c - 1][i - 1] = build; + } } } - if (c <= one) { - c++; - } + if (c <= one) { + c++; + } +// c++; } - 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); - } - } + + +// @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"); +// 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; +// } +// } 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++; +// } +// } +// 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); +// } +// } }