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);