修改查询语句

master
lwj 2024-09-09 02:38:22 +08:00
parent 8bf82a4012
commit ea8dc77575
1 changed files with 111 additions and 109 deletions

View File

@ -1,13 +1,13 @@
package com.muyu.cloud.etl.mysql; package com.muyu.cloud.etl.mysql;
import com.muyu.Hikari.HikariPool;
import com.muyu.cloud.etl.service.SourceService; import com.muyu.cloud.etl.service.SourceService;
import com.muyu.common.core.utils.SpringUtils; import com.muyu.common.core.utils.SpringUtils;
import com.muyu.data.base.BaseDataAbsSource; import com.muyu.data.base.BaseDataAbsSource;
import com.muyu.domain.DataValue; import com.muyu.domain.DataValue;
import com.muyu.domain.Source; import com.muyu.domain.Source;
import com.muyu.domain.enums.DataType; import com.muyu.domain.enums.DataType;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource; import com.zaxxer.hikari.HikariDataSource;
import lombok.extern.log4j.Log4j2; import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -81,120 +81,39 @@ 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<Integer, DataValue> map = new ConcurrentHashMap<>();
Source dataSources = sourceService.getById(dataSourceId);
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);
DataValue[][] dataValues = new DataValue[one][two];
HikariDataSource hikariDataSource = new HikariDataSource(hikariConfig);
try {
Connection 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);
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 // @Override
// public DataValue[][] getRows () { // public DataValue[][] getRows () {
//
// MySqlQuery query = getQuery(); // MySqlQuery query = getQuery();
// Integer one = Math.toIntExact(query.getOne()); // Integer one = Math.toIntExact(query.getOne());
// Integer two = query.getTwo(); // Integer two = query.getTwo();
// String sql = query.getSql(); // String sql = query.getSql();
// Long dataSourceId = query.getDataSourceId(); // Long dataSourceId = query.getDataSourceId();
// ConcurrentHashMap<Integer, DataValue> map = new ConcurrentHashMap<>(); // ConcurrentHashMap<Integer, DataValue> map = new ConcurrentHashMap<>();
//
// Source dataSources = sourceService.getById(dataSourceId); // Source dataSources = sourceService.getById(dataSourceId);
// //
// HikariDataSource hikariDataSource = HikariPool.getHikariDataSource(dataSources); // HikariConfig hikariConfig = new HikariConfig();
// // hikariConfig.setPoolName("HikariCP 连接池");
// Connection conn = null; // hikariConfig.setDriverClassName(dataSources.getDriverName());
//// try { // hikariConfig.setJdbcUrl(dataSources.getUrl()); // 修正这里
//// // hikariConfig.setUsername(dataSources.getUsername());
//// } catch (SQLException e) { // hikariConfig.setPassword(dataSources.getPassword());
//// throw new RuntimeException(e); // hikariConfig.setMinimumIdle(2);
//// } // hikariConfig.setMaximumPoolSize(12);
// log.info("one------------"+one+"------------two"+two);
// //
// DataValue[][] dataValues = new DataValue[one][two]; // DataValue[][] dataValues = new DataValue[one][two];
// try {
// conn = hikariDataSource.getConnection();
// //
// HikariDataSource hikariDataSource = new HikariDataSource(hikariConfig);
// try {
// Connection conn = hikariDataSource.getConnection();
// PreparedStatement preparedStatement = conn.prepareStatement(sql); // PreparedStatement preparedStatement = conn.prepareStatement(sql);
// ResultSet resultSet = preparedStatement.executeQuery(); // ResultSet resultSet = preparedStatement.executeQuery();
// ResultSetMetaData metaData = resultSet.getMetaData(); // ResultSetMetaData metaData = resultSet.getMetaData();
// int columnCount = metaData.getColumnCount(); // int columnCount = metaData.getColumnCount();
// int c = 1; // int c = 0;
// while (resultSet.next()){ // while (resultSet.next()){
// for (int i = 1; i <= columnCount; i++) { // for (int i = 1; i <= columnCount; i++) {
// if (resultSet.isFirst()){ // if (resultSet.isFirst()){
@ -215,13 +134,8 @@ public class MySqlDataSource extends BaseDataAbsSource {
// .type(DataType.findBySqlType(columnTypeName)) // .type(DataType.findBySqlType(columnTypeName))
// .build(); // .build();
// map.put(i,build); // map.put(i,build);
//
//// if (c <= one && i <= columnCount) {
//// dataValues[c - 1][i - 1] = build;
//// }
// dataValues[c][i-1]=build; // dataValues[c][i-1]=build;
// }else { // }else {
//
// DataValue build = DataValue.builder() // DataValue build = DataValue.builder()
// .key(metaData.getColumnName(i)) // .key(metaData.getColumnName(i))
// .label(map.get(i).getLabel()) // .label(map.get(i).getLabel())
@ -229,29 +143,117 @@ public class MySqlDataSource extends BaseDataAbsSource {
// .type(map.get(i).getType()) // .type(map.get(i).getType())
// .build(); // .build();
// dataValues[c][i-1]=build; // dataValues[c][i-1]=build;
//// if (c <= one && i <= columnCount) {
//// dataValues[c - 1][i - 1] = build;
//// }
// } // }
// } // }
//// if (c <= one) {
//// c++;
//// }
// c++; // c++;
// } // }
//
// } catch (SQLException e) { // } catch (SQLException e) {
// throw new RuntimeException(e); // throw new RuntimeException(e);
// }finally { // }finally {
// close(hikariDataSource); // close(hikariDataSource); // 关闭数据源
// } // }
// //
// return dataValues; // return dataValues;
// } // }
//
// private static void close(HikariDataSource dataSource) { // private static void close(HikariDataSource dataSource) {
// if (dataSource != null) { // if (dataSource != null) {
// dataSource.close(); // 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<Integer, DataValue> 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);
// 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();
}
}
//第一种方法 //第一种方法