From b6a4443ce1b05f97ddc3a4b579873bc0673d00b7 Mon Sep 17 00:00:00 2001 From: hekaiyu <13673834656@163.com> Date: Wed, 15 Oct 2025 11:33:19 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BA=A7=E8=81=94=E6=9F=A5=E8=AF=A2=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/StasDataSourceServiceImpl.java | 40 ++++++++++++++----- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/jeecg-module-sync/src/main/java/org/jeecg/dataSource/service/impl/StasDataSourceServiceImpl.java b/jeecg-module-sync/src/main/java/org/jeecg/dataSource/service/impl/StasDataSourceServiceImpl.java index 3409f81..0ec2482 100644 --- a/jeecg-module-sync/src/main/java/org/jeecg/dataSource/service/impl/StasDataSourceServiceImpl.java +++ b/jeecg-module-sync/src/main/java/org/jeecg/dataSource/service/impl/StasDataSourceServiceImpl.java @@ -84,37 +84,57 @@ public class StasDataSourceServiceImpl extends ServiceImpl queryUserList(String sourceId) { - return queryDatabaseMetadata(sourceId, "SELECT username FROM ALL_USERS", "username"); + StasDataSource stasDataSource = this.baseMapper.selectById(sourceId); + if(SourceDataTypeEnum.ORACLE.getKey() == stasDataSource.getType()){ + return queryDatabaseMetadata(stasDataSource, "SELECT username FROM ALL_USERS", "username"); + } else { + return queryDatabaseMetadata(stasDataSource, "SELECT datname AS username FROM pg_database WHERE datistemplate = false ORDER BY datname;", "username"); + } } @Override public List queryTableList(String sourceId, String username) { - String sql = "SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER = ?"; - return queryDatabaseMetadata(sourceId, sql, "TABLE_NAME", username); + StasDataSource stasDataSource = this.baseMapper.selectById(sourceId); + if(SourceDataTypeEnum.ORACLE.getKey() == stasDataSource.getType()){ + String sql = "SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER = ?"; + return queryDatabaseMetadata(stasDataSource, sql, "TABLE_NAME", username); + } else { + String sql = "SELECT tablename AS table_name FROM pg_tables WHERE schemaname = ?"; + return queryDatabaseMetadata(stasDataSource, sql, "table_name", "public"); + } } @Override public List queryColumnList(String sourceId, String username, String tableName) { - String sql = "SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE OWNER = ? AND TABLE_NAME = ?"; - return queryDatabaseMetadata(sourceId, sql, "COLUMN_NAME", username, tableName); + StasDataSource stasDataSource = this.baseMapper.selectById(sourceId); + if(SourceDataTypeEnum.ORACLE.getKey() == stasDataSource.getType()){ + String sql = "SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE OWNER = ? AND TABLE_NAME = ?"; + return queryDatabaseMetadata(stasDataSource, sql, "COLUMN_NAME", username, tableName); + } else { + String sql = "SELECT column_name FROM information_schema.columns WHERE table_schema = ? AND table_name = ?"; + return queryDatabaseMetadata(stasDataSource, sql, "column_name", "public", tableName); + } } /** * 通用数据库元数据查询方法 - * @param sourceId 数据源ID + * @param stasDataSource 数据源 * @param sql 查询SQL * @param columnName 要获取的列名 * @param params SQL参数 * @return 查询结果列表 */ - private List queryDatabaseMetadata(String sourceId, String sql, String columnName, Object... params) { - StasDataSource stasDataSource = this.baseMapper.selectById(sourceId); + private List queryDatabaseMetadata(StasDataSource stasDataSource, String sql, String columnName, Object... params) { if (stasDataSource == null) { return Collections.emptyList(); } - String urlSource = DBUtil.ORACLE_URL_PREFIX + stasDataSource.getIpAddress() + ":" - + stasDataSource.getPort() + stasDataSource.getServeId(); + String urlSource; + if(SourceDataTypeEnum.POSTGRES.getKey() == stasDataSource.getType()){ + urlSource = DBUtil.POSTGRES_URL_PREFIX + stasDataSource.getIpAddress() + ":" + stasDataSource.getPort() + stasDataSource.getServeId(); + }else { + urlSource = DBUtil.ORACLE_URL_PREFIX + stasDataSource.getIpAddress() + ":" + stasDataSource.getPort() + stasDataSource.getServeId(); + } List resultList = new ArrayList<>();