09051851:对这个资产展示使用线程池的方法去做,第一次优化代码

master
冷调 2024-09-05 18:51:56 +08:00
parent ecfa553c98
commit 25ea324d30
1 changed files with 84 additions and 32 deletions

View File

@ -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<DataValueMapper, DataValue
return dataValueList;
}
@Override
public List<DataValue> 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<DataValue> 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<DataValue> 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<DataValue> 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<DataValue> list = new ArrayList<>();
List<DataValue> 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<DataValue> 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) {