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 aa0990b..ae3116d 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 @@ -168,97 +168,8 @@ 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 = 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); - -// 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() { +// public DataValue[][] getRows () { // MySqlQuery query = getQuery(); // Integer one = Math.toIntExact(query.getOne()); // Integer two = query.getTwo(); @@ -269,31 +180,35 @@ 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()) { +// int c = 0; +// 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)) @@ -301,47 +216,134 @@ 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); // } -// } // -// 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); +// 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; + 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++; + } + } + log.info("返回日志"); + 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); + } + } + }