From 40c9516a49cdacc38907f2af030cd460773e090b Mon Sep 17 00:00:00 2001
From: sunshine7058 <2564255161@qq.com>
Date: Thu, 16 May 2024 20:59:05 +0800
Subject: [PATCH] =?UTF-8?q?fix:=E5=AE=8C=E5=96=84=E8=A7=84=E5=88=99?=
=?UTF-8?q?=E5=BC=95=E6=93=8E=E7=89=88=E6=9C=AC=EF=BC=8C=E4=BD=BF=E7=94=A8?=
=?UTF-8?q?=E8=BF=9E=E6=8E=A5=E6=B1=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../muyu-data-source-client/pom.xml | 5 ++
.../client/config/SourceClientConfig.java | 62 +++++++++++--------
.../client/config/SourceClientRunner.java | 20 ------
.../data/source/config/DataSourceConfig.java | 3 +
.../data/test/controller/TestController.java | 7 ++-
5 files changed, 49 insertions(+), 48 deletions(-)
diff --git a/muyu-modules/muyu-data-source/muyu-data-source-client/pom.xml b/muyu-modules/muyu-data-source/muyu-data-source-client/pom.xml
index 658e7c7..4f64013 100644
--- a/muyu-modules/muyu-data-source/muyu-data-source-client/pom.xml
+++ b/muyu-modules/muyu-data-source/muyu-data-source-client/pom.xml
@@ -28,5 +28,10 @@
3.6.3
compile
+
+ com.muyu
+ muyu-data-source-common
+ 3.6.3
+
diff --git a/muyu-modules/muyu-data-source/muyu-data-source-client/src/main/java/com/muyu/data/source/client/config/SourceClientConfig.java b/muyu-modules/muyu-data-source/muyu-data-source-client/src/main/java/com/muyu/data/source/client/config/SourceClientConfig.java
index 1bc8e11..e190340 100644
--- a/muyu-modules/muyu-data-source/muyu-data-source-client/src/main/java/com/muyu/data/source/client/config/SourceClientConfig.java
+++ b/muyu-modules/muyu-data-source/muyu-data-source-client/src/main/java/com/muyu/data/source/client/config/SourceClientConfig.java
@@ -1,6 +1,8 @@
package com.muyu.data.source.client.config;
import com.muyu.common.core.domain.Result;
+import com.muyu.data.source.client.jdbcUtils.JDBCConcreteClass;
+import com.muyu.data.source.config.DataSourceConfig;
import com.muyu.data.source.domain.Children;
import com.muyu.data.source.domain.DataSource;
import com.muyu.data.source.domain.DatabaseType;
@@ -23,60 +25,66 @@ import org.springframework.context.annotation.Import;
/**
* 数据接入客户端配置类
*
- * @author CHX
- * on 2024/5/9 星期四
+ * @author CHX on 2024/5/9 星期四
*/
@ComponentScan
@Import(value = {SourceClientRunner.class})
public class SourceClientConfig {
-@Autowired
+
+ @Autowired
private RemoteDataSourceService remoteDataSourceService;
-@Autowired
- private RemoteDataTypeService remoteDataTypeService;
-@Autowired
+
+ @Autowired
private RemoteChildrenService remoteChildrenService;
public List> getDataModel(Long id) {
- List> list=new ArrayList<>();
+ List> list = new ArrayList<>();
+ //根据表id查询表结构对象
Result childrenResult = remoteChildrenService.selectChildren(id);
Children children = childrenResult.getData();
+ //根据数据源id查询数据源对象
Result dataSourceResult = remoteDataSourceService.getDataSourceById(children.getAssetId());
DataSource dataSource = dataSourceResult.getData();
- Result databaseTypeResult = remoteDataTypeService.getDataType(dataSource.getDataType());
- DatabaseType databaseType = databaseTypeResult.getData();
- String jdbcUrl=databaseType.getUrlPre()+dataSource.getHost()+":"+dataSource.getPort()+"/"+dataSource.getDatabaseName()+"?"+dataSource.getConnectionParam();
- String sql="";
- if ("mysql".equals(dataSource.getDataType())){
- sql="select * from" +children.getName();
+ //sql
+ String sql = "";
+ switch (dataSource.getDataType()) {
+ case "mysql":
+ sql = "select * from" + children.getName();
+ break;
+ case "postgresql":
+ sql="select * from "+dataSource.getDatabaseName()+"."+children.getName();
+ break;
}
try {
- Class.forName(databaseType.getDriverManager());
- Connection connection = DriverManager.getConnection(jdbcUrl, dataSource.getUser(), dataSource.getPassword());
- PreparedStatement ps = connection.prepareStatement(sql);
- ResultSet rs = ps.executeQuery();
+ //调用连接池,获取连接
+ // 调用连接池 获取连接
+ Connection connection = DataSourceConfig.getConnection(dataSource.getId());
+ JDBCConcreteClass jdbcConcreteClass = new JDBCConcreteClass();
+ // 调用抽象类 获取jdbc查询结果
+ ResultSet rs = jdbcConcreteClass.getResultSet(connection, sql);
ResultSetMetaData metaData = rs.getMetaData();
List dataModelList = new ArrayList<>();
- while (rs.next()){
- for (int i = 1; i<= metaData.getColumnCount(); i++) {
+ while (rs.next()) {
+ for (int i = 1; i <= metaData.getColumnCount(); i++) {
+ // 字段名称
String columnName = metaData.getColumnName(i);
+ // 字段值
Object value = rs.getObject(i);
+ // 字段类型
String columnTypeName = metaData.getColumnTypeName(i);
+ // 字段java映射类型
String columnClassName = metaData.getColumnClassName(i);
- DataModel dataModel = DataModel.builder()
- .key(columnName)
- .value(value)
- .sourceType(columnTypeName)
- .processType(columnClassName)
- .processClass(Class.forName(columnClassName))
- .build();
+ DataModel dataModel = DataModel.builder().key(columnName).value(value).sourceType(columnTypeName)
+ .processType(columnClassName).processClass(Class.forName(columnClassName)).build();
dataModelList.add(dataModel);
}
list.add(dataModelList);
}
-
+ // 归还连接
+ DataSourceConfig.returnConn(connection);
} catch (ClassNotFoundException | SQLException e) {
throw new RuntimeException(e);
}
diff --git a/muyu-modules/muyu-data-source/muyu-data-source-client/src/main/java/com/muyu/data/source/client/config/SourceClientRunner.java b/muyu-modules/muyu-data-source/muyu-data-source-client/src/main/java/com/muyu/data/source/client/config/SourceClientRunner.java
index 5ff9053..455ffda 100644
--- a/muyu-modules/muyu-data-source/muyu-data-source-client/src/main/java/com/muyu/data/source/client/config/SourceClientRunner.java
+++ b/muyu-modules/muyu-data-source/muyu-data-source-client/src/main/java/com/muyu/data/source/client/config/SourceClientRunner.java
@@ -43,25 +43,5 @@ public class SourceClientRunner implements ApplicationRunner {
DatabaseType databaseType = databaseTypeResult.getData();
DataSourceConfig.init(dataSource,databaseType);
});
-// Long key = dataSourceList.get(0).getId();
-// log.info("查看连接池");
-// DataSourceConfig.size(key);
-// Thread.sleep(500);
-// log.info("取出一个连接,查看连接池");
-// Connection connection = DataSourceConfig.getConnection(key);
-// DataSourceConfig.size(key);
-// Thread.sleep(500);
-// JDBCConcreteClass jdbcConcreteClass = new JDBCConcreteClass();
-// ResultSet resultSet = jdbcConcreteClass.getResultSet(connection, "select * from engine_maintenance");
-// ResultSetMetaData metaData = resultSet.getMetaData();
-// for (int i = 1; i <= metaData.getColumnCount(); i++) {
-// log.info("字段名称:{}",metaData.getColumnClassName(i));
-// log.info("数据库类型:{}",metaData.getColumnTypeName(i));
-// log.info("java类型:{}",metaData.getColumnClassName(i));
-// }
-//
-// log.info("返回一个连接,查看连接池");
-// DataSourceConfig.returnConn(connection);
-// DataSourceConfig.size(key);
}
}
diff --git a/muyu-modules/muyu-data-source/muyu-data-source-common/src/main/java/com/muyu/data/source/config/DataSourceConfig.java b/muyu-modules/muyu-data-source/muyu-data-source-common/src/main/java/com/muyu/data/source/config/DataSourceConfig.java
index fe66cc8..cdd7d3f 100644
--- a/muyu-modules/muyu-data-source/muyu-data-source-common/src/main/java/com/muyu/data/source/config/DataSourceConfig.java
+++ b/muyu-modules/muyu-data-source/muyu-data-source-common/src/main/java/com/muyu/data/source/config/DataSourceConfig.java
@@ -24,6 +24,7 @@ import org.springframework.stereotype.Component;
public class DataSourceConfig {
private static HashMap dataSourceMap=new HashMap<>();
+ //初始化连接
public static void init(DataSource dataSource, DatabaseType databaseType){
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setUsername(dataSource.getUser());
@@ -42,6 +43,7 @@ public class DataSourceConfig {
dataSourceMap.put(dataSource.getId(), druidDataSource);
}
+ //获取连接
public static Connection getConnection(Long key){
DruidDataSource druidDataSource=dataSourceMap.get(key);
try {
@@ -52,6 +54,7 @@ public class DataSourceConfig {
}
}
+ //归还连接
public static void returnConn(Connection connection){
try {
connection.close();
diff --git a/muyu-modules/muyu-data-test/src/main/java/data/test/controller/TestController.java b/muyu-modules/muyu-data-test/src/main/java/data/test/controller/TestController.java
index 04c00c2..ecac2e5 100644
--- a/muyu-modules/muyu-data-test/src/main/java/data/test/controller/TestController.java
+++ b/muyu-modules/muyu-data-test/src/main/java/data/test/controller/TestController.java
@@ -24,7 +24,12 @@ public class TestController {
@Autowired
private TestService testService;
-@GetMapping("/getDataModelList/{id}")
+ /**
+ * 获取数据实例集合
+ * @param id
+ * @return
+ */
+ @GetMapping("/getDataModelList/{id}")
public Result>> getDataModelList(@PathVariable("id")Long id){
List> dataModelList=testService.getDataModelList(id);
return Result.success(dataModelList);