From 25ea324d308846c95a64e25e855e9eea80398d0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B7=E8=B0=83?= <3084898776@qq.com> Date: Thu, 5 Sep 2024 18:51:56 +0800 Subject: [PATCH] =?UTF-8?q?09051851:=E5=AF=B9=E8=BF=99=E4=B8=AA=E8=B5=84?= =?UTF-8?q?=E4=BA=A7=E5=B1=95=E7=A4=BA=E4=BD=BF=E7=94=A8=E7=BA=BF=E7=A8=8B?= =?UTF-8?q?=E6=B1=A0=E7=9A=84=E6=96=B9=E6=B3=95=E5=8E=BB=E5=81=9A,?= =?UTF-8?q?=E7=AC=AC=E4=B8=80=E6=AC=A1=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/Impl/DataValueServiceImpl.java | 116 +++++++++++++----- 1 file changed, 84 insertions(+), 32 deletions(-) diff --git a/muyu-source-server/src/main/java/com/muyu/source/service/Impl/DataValueServiceImpl.java b/muyu-source-server/src/main/java/com/muyu/source/service/Impl/DataValueServiceImpl.java index 13afbe4..499378c 100644 --- a/muyu-source-server/src/main/java/com/muyu/source/service/Impl/DataValueServiceImpl.java +++ b/muyu-source-server/src/main/java/com/muyu/source/service/Impl/DataValueServiceImpl.java @@ -17,6 +17,10 @@ import org.springframework.stereotype.Service; import java.sql.*; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; import static com.muyu.source.pool.config.BaseConfig.SELECTALL; @@ -73,52 +77,100 @@ public class DataValueServiceImpl extends ServiceImpl findTableValueByTableName(Long basicId, String tableName) { - MysqlQuery mySqlQuery = new MysqlQuery(); - mySqlQuery.setDataSourceId(String.valueOf(basicId)); - DataSource etlDataScore = dataSourceService.getById(basicId); - MysqlPool mysqlPool = new MysqlPool(etlDataScore); - mysqlPool.init(); - Connection conn = mysqlPool.getConn(); +// @Override +// public List findTableValueByTableName(Long basicId, String tableName) { +// MysqlQuery mySqlQuery = new MysqlQuery(); +// mySqlQuery.setDataSourceId(String.valueOf(basicId)); +// DataSource etlDataScore = dataSourceService.getById(basicId); +// MysqlPool mysqlPool = new MysqlPool(etlDataScore); +// mysqlPool.init(); +// Connection conn = mysqlPool.getConn(); +// +// List list = new ArrayList<>(); +// +// try { +// +// PreparedStatement preparedStatement = conn.prepareStatement(SELECTALL+tableName); +// +// ResultSet resultSet = preparedStatement.executeQuery(); +// ResultSetMetaData metaData = resultSet.getMetaData(); +// int columnCount = metaData.getColumnCount(); +// +// +// while (resultSet.next()){ +// for (int i = 1; i <= columnCount; i++) { +// 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.convertTypeString(columnTypeName)) +// .build(); +// list.add(build); +// } +// } +// } catch (SQLException e) { +// throw new RuntimeException(e); +// } +// mysqlPool.replease(conn); +// mysqlPool.closeConn(); +// return list; +// } +private static final int THREAD_POOL_SIZE = 10; + private static final ExecutorService executorService = Executors.newFixedThreadPool(THREAD_POOL_SIZE); +@Override +public List findTableValueByTableName(Long basicId, String tableName) { + MysqlQuery mySqlQuery = new MysqlQuery(); + mySqlQuery.setDataSourceId(String.valueOf(basicId)); + DataSource etlDataScore = dataSourceService.getById(basicId); + MysqlPool mysqlPool = new MysqlPool(etlDataScore); + mysqlPool.init(); + Connection conn = mysqlPool.getConn(); - List list = new ArrayList<>(); + List list = new ArrayList<>(); - try { - - PreparedStatement preparedStatement = conn.prepareStatement(SELECTALL+tableName); - - ResultSet resultSet = preparedStatement.executeQuery(); - ResultSetMetaData metaData = resultSet.getMetaData(); - int columnCount = metaData.getColumnCount(); - - - while (resultSet.next()){ - for (int i = 1; i <= columnCount; i++) { - String columnTypeName = metaData.getColumnTypeName(i); + try { + PreparedStatement preparedStatement = conn.prepareStatement(SELECTALL + tableName); + ResultSet resultSet = preparedStatement.executeQuery(); + ResultSetMetaData metaData = resultSet.getMetaData(); + int columnCount = metaData.getColumnCount(); + while (resultSet.next()) { + for (int i = 1; i <= columnCount; i++) { + final int index = i; + Future future = executorService.submit(() -> { + String columnTypeName = metaData.getColumnTypeName(index); DatabaseMetaData metaDataColumns = conn.getMetaData(); - ResultSet columns = metaDataColumns.getColumns(null, null, metaData.getTableName(i), metaData.getColumnName(i)); - String remarks =null; - while (columns.next()){ + ResultSet columns = metaDataColumns.getColumns(null, null, metaData.getTableName(index), metaData.getColumnName(index)); + String remarks = null; + while (columns.next()) { remarks = columns.getString("REMARKS"); } - DataValue build = DataValue.builder() - .key(metaData.getColumnName(i)) + return DataValue.builder() + .key(metaData.getColumnName(index)) .label(remarks) - .value(resultSet.getObject(i, DataType.convertType(columnTypeName))) + .value(resultSet.getObject(index, DataType.convertType(columnTypeName))) .type(DataType.convertTypeString(columnTypeName)) .build(); - list.add(build); - } + }); + list.add(future.get()); } - } catch (SQLException e) { - throw new RuntimeException(e); } + } catch (SQLException | InterruptedException | ExecutionException e) { + throw new RuntimeException(e); + } finally { mysqlPool.replease(conn); mysqlPool.closeConn(); - return list; } + return list; +} @Override public Integer addTableValue(DataValueModel dataValueModel) {