From 584fa48d0d37c6afd09dfc0c9c9e6112c8696d6d Mon Sep 17 00:00:00 2001 From: diantu Date: Thu, 2 Feb 2023 14:36:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=BE=BE=E6=A2=A6=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 11 +++ zyplayer-doc-data/pom.xml | 9 ++ .../doc/db/controller/vo/TableDdlVo.java | 4 + .../configuration/DatasourceUtil.java | 3 +- .../configuration/analysis/DmAnalysis.java | 27 ++++++ .../analysis/OracleAnalysis.java | 5 +- .../db/enums/DatabaseProductEnum.java | 9 +- .../framework/db/mapper/dm/DmBaseMapper.xml | 97 +++++++++++++++++++ .../db/framework/db/mapper/dm/DmMapper.java | 10 ++ .../db/service/database/DmServiceImpl.java | 29 ++++++ zyplayer-doc-manage/pom.xml | 9 ++ .../db-ui/src/views/data/DatasourceManage.vue | 5 +- 12 files changed, 209 insertions(+), 9 deletions(-) create mode 100644 zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/configuration/analysis/DmAnalysis.java create mode 100644 zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/db/mapper/dm/DmBaseMapper.xml create mode 100644 zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/db/mapper/dm/DmMapper.java create mode 100644 zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/service/database/DmServiceImpl.java diff --git a/pom.xml b/pom.xml index 8d22ffbd..b491e0dc 100644 --- a/pom.xml +++ b/pom.xml @@ -74,6 +74,17 @@ jtds 1.3.1 + + com.oracle + ojdbc14 + 12 + + + + com.dameng + DmJdbcDriver18 + 8.1.1.193 + diff --git a/zyplayer-doc-data/pom.xml b/zyplayer-doc-data/pom.xml index 67064548..34f8ba6a 100644 --- a/zyplayer-doc-data/pom.xml +++ b/zyplayer-doc-data/pom.xml @@ -51,6 +51,15 @@ mysql mysql-connector-java + + com.oracle + ojdbc14 + + + + com.dameng + DmJdbcDriver18 + net.sourceforge.jtds jtds diff --git a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/controller/vo/TableDdlVo.java b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/controller/vo/TableDdlVo.java index db47bc39..492c166e 100644 --- a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/controller/vo/TableDdlVo.java +++ b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/controller/vo/TableDdlVo.java @@ -17,6 +17,7 @@ public class TableDdlVo { private String mysql; private String sqlserver; private String oracle; + private String dm; private String postgresql; private String hive; @@ -31,6 +32,9 @@ public class TableDdlVo { if (Objects.equals(current, DatabaseProductEnum.ORACLE.name().toLowerCase())) { return oracle; } + if (Objects.equals(current, DatabaseProductEnum.DM.name().toLowerCase())) { + return dm; + } if (Objects.equals(current, DatabaseProductEnum.POSTGRESQL.name().toLowerCase())) { return postgresql; } diff --git a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/configuration/DatasourceUtil.java b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/configuration/DatasourceUtil.java index dd2069f2..a8316867 100644 --- a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/configuration/DatasourceUtil.java +++ b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/configuration/DatasourceUtil.java @@ -29,10 +29,11 @@ public class DatasourceUtil { put(DatabaseProductEnum.MYSQL.getDriverClassName(), new MysqlAnalysis()); put(DatabaseProductEnum.HIVE.getDriverClassName(), new HiveAnalysis()); put(DatabaseProductEnum.ORACLE.getDriverClassName(), new OracleAnalysis()); + put(DatabaseProductEnum.DM.getDriverClassName(), new DmAnalysis()); put(DatabaseProductEnum.POSTGRESQL.getDriverClassName(), new PostgresqlAnalysis()); put(DatabaseProductEnum.SQLSERVER.getDriverClassName(), new SqlserverAnalysis()); }}; - + public static DatabaseFactoryBean createDatabaseFactoryBean(DbDatasource dbDatasource, boolean breakAfterAcquireFailure) throws Exception { // 描述连接信息的对象 DatabaseFactoryBean databaseFactoryBean = new DatabaseFactoryBean(); diff --git a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/configuration/analysis/DmAnalysis.java b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/configuration/analysis/DmAnalysis.java new file mode 100644 index 00000000..a904e454 --- /dev/null +++ b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/configuration/analysis/DmAnalysis.java @@ -0,0 +1,27 @@ +package com.zyplayer.doc.db.framework.configuration.analysis; + +import com.zyplayer.doc.db.framework.db.bean.DatabaseFactoryBean; +import com.zyplayer.doc.db.framework.db.enums.DatabaseProductEnum; +import org.springframework.core.io.Resource; +import org.springframework.core.io.support.PathMatchingResourcePatternResolver; + +/** + * 达梦链接url解析 + * + * @author diantu + * @since 2023-02-01 + */ +public class DmAnalysis implements AnalysisApi{ + + @Override + public Resource[] process(String dbUrl, DatabaseFactoryBean databaseFactoryBean) throws Exception { + // jdbc:dm://127.0.0.1:5236?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=utf-8 + String[] urlParamArr = dbUrl.split("\\?"); + String[] urlDbNameArr = urlParamArr[0].split("://"); + urlDbNameArr = urlDbNameArr[0].split(":"); + databaseFactoryBean.setDbName(urlDbNameArr[urlDbNameArr.length - 1]); + databaseFactoryBean.setDatabaseProduct(DatabaseProductEnum.DM); + PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); + return resolver.getResources("classpath:com/zyplayer/doc/db/framework/db/mapper/dm/*.xml"); + } +} diff --git a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/configuration/analysis/OracleAnalysis.java b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/configuration/analysis/OracleAnalysis.java index 9fe8f21c..d40edc3a 100644 --- a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/configuration/analysis/OracleAnalysis.java +++ b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/configuration/analysis/OracleAnalysis.java @@ -12,11 +12,10 @@ import org.springframework.core.io.support.PathMatchingResourcePatternResolver; * @since 2021-05-13 */ public class OracleAnalysis implements AnalysisApi { - + @Override public Resource[] process(String dbUrl, DatabaseFactoryBean databaseFactoryBean) throws Exception { // jdbc:oracle:thin:@127.0.0.1:1521:user_info - // 代码是写好的,但还没有oracle的库让我测试过~ String[] urlParamArr = dbUrl.split("\\?")[0].split("@"); String[] urlDbNameArr = urlParamArr[0].split("/"); if (urlDbNameArr.length <= 1) { @@ -27,5 +26,5 @@ public class OracleAnalysis implements AnalysisApi { PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); return resolver.getResources("classpath:com/zyplayer/doc/db/framework/db/mapper/oracle/*.xml"); } - + } diff --git a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/db/enums/DatabaseProductEnum.java b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/db/enums/DatabaseProductEnum.java index 1b84d871..424feb79 100644 --- a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/db/enums/DatabaseProductEnum.java +++ b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/db/enums/DatabaseProductEnum.java @@ -10,20 +10,21 @@ public enum DatabaseProductEnum { MYSQL("com.mysql.jdbc.Driver"), SQLSERVER("net.sourceforge.jtds.jdbc.Driver"), ORACLE("oracle.jdbc.driver.OracleDriver"), + DM("dm.jdbc.driver.DmDriver"), POSTGRESQL("org.postgresql.Driver"), HIVE("org.apache.hive.jdbc.HiveDriver"), ; - + private String driverClassName; - + DatabaseProductEnum(String driverClassName) { this.driverClassName = driverClassName; } - + public String getDriverClassName() { return driverClassName; } - + public void setDriverClassName(String driverClassName) { this.driverClassName = driverClassName; } diff --git a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/db/mapper/dm/DmBaseMapper.xml b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/db/mapper/dm/DmBaseMapper.xml new file mode 100644 index 00000000..83e64435 --- /dev/null +++ b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/db/mapper/dm/DmBaseMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + comment on table ${dbName}.${tableName} is #{new Desc} + + + + + comment on column ${dbName}.${tableName}.${columnName} is #{new Desc} + + + + delete from ${dbName}.${tableName} where + + ${key} = #{value} + + + + diff --git a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/db/mapper/dm/DmMapper.java b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/db/mapper/dm/DmMapper.java new file mode 100644 index 00000000..189ae80f --- /dev/null +++ b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/db/mapper/dm/DmMapper.java @@ -0,0 +1,10 @@ +package com.zyplayer.doc.db.framework.db.mapper.dm; + +/** + * 达梦数据库的mapper持有对象 + * + * @author diantu + * @since 2023年2月1日 + */ +public interface DmMapper { +} diff --git a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/service/database/DmServiceImpl.java b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/service/database/DmServiceImpl.java new file mode 100644 index 00000000..69844970 --- /dev/null +++ b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/service/database/DmServiceImpl.java @@ -0,0 +1,29 @@ +package com.zyplayer.doc.db.service.database; + +import com.zyplayer.doc.db.framework.db.enums.DatabaseProductEnum; +import org.springframework.stereotype.Service; + +/** + * 达梦数据查询服务实现类 + * + * @author diantu + * @since 2023-02-01 + */ +@Service +public class DmServiceImpl extends DbBaseService { + + @Override + public DatabaseProductEnum getDatabaseProduct() { + return DatabaseProductEnum.DM; + } + + /** + * 达梦数据库中没有也不需要use语句,指定数据库名的情况下直接返回空即可 + * @author diantu + * @since 2023-02-01 + */ + @Override + public String getUseDbSql(String dbName) { + return null; + } +} diff --git a/zyplayer-doc-manage/pom.xml b/zyplayer-doc-manage/pom.xml index 801a84d2..15a04fb3 100644 --- a/zyplayer-doc-manage/pom.xml +++ b/zyplayer-doc-manage/pom.xml @@ -61,6 +61,15 @@ mysql mysql-connector-java + + com.oracle + ojdbc14 + + + + com.dameng + DmJdbcDriver18 + diff --git a/zyplayer-doc-ui/db-ui/src/views/data/DatasourceManage.vue b/zyplayer-doc-ui/db-ui/src/views/data/DatasourceManage.vue index efae92f6..897cc260 100644 --- a/zyplayer-doc-ui/db-ui/src/views/data/DatasourceManage.vue +++ b/zyplayer-doc-ui/db-ui/src/views/data/DatasourceManage.vue @@ -57,6 +57,7 @@ + @@ -278,7 +279,9 @@ this.urlPlaceholder = "例:jdbc:postgresql://127.0.0.1:5432/user_info"; } else if (this.newDatasource.driverClassName == 'org.apache.hive.jdbc.HiveDriver') { this.urlPlaceholder = "例:jdbc:hive2://127.0.0.1:21050/user_info;auth=noSasl"; - } + } else if (this.newDatasource.driverClassName == 'dm.jdbc.driver.DmDriver'){ + this.urlPlaceholder = "例:jdbc:dm://127.0.0.1:5236?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=utf-8"; + } }, handleCurrentChange(to) { this.currentPage = to;