【7.1.5】整合两个dbType

pull/22/MERGE
fengshuonan 2021-11-21 14:25:49 +08:00
parent ac7afdc2a1
commit c2eca322dd
7 changed files with 63 additions and 115 deletions

View File

@ -17,30 +17,47 @@ public enum DbTypeEnum {
/**
* mysql
*/
MYSQL("mysql", "mysql"),
MYSQL("mysql", "mysql", "select 1"),
/**
* pgsql
*/
PG_SQL("pgsql", "postgresql"),
PG_SQL("postgresql", "pgsql", "select version()"),
/**
* oracle
*/
ORACLE("oracle", "oracle"),
ORACLE("oracle", "oracle", "select 1 from dual"),
/**
* 使oraclemapping.xml
*/
DM("dm", "oracle", "select 1 from dual"),
/**
* mssql
*/
MS_SQL("mssql", "sqlserver");
MS_SQL("sqlserver", "mssql", "select 1");
private final String code;
/**
* spring.datasource.url
*/
private final String urlWords;
private final String name;
/**
* mapping.xml使databaseId="xxx"
*/
private final String xmlDatabaseId;
DbTypeEnum(String code, String name) {
this.code = code;
this.name = name;
/**
* validateQuery使
*/
private final String validateQuery;
DbTypeEnum(String urlWords, String xmlDatabaseId, String validateQuery) {
this.urlWords = urlWords;
this.xmlDatabaseId = xmlDatabaseId;
this.validateQuery = validateQuery;
}
}

View File

@ -46,15 +46,14 @@ public class DatabaseTypeUtil {
return DbTypeEnum.MYSQL;
}
if (jdbcUrl.contains(DbTypeEnum.ORACLE.getName())) {
return DbTypeEnum.ORACLE;
} else if (jdbcUrl.contains(DbTypeEnum.PG_SQL.getName())) {
return DbTypeEnum.PG_SQL;
} else if (jdbcUrl.contains(DbTypeEnum.MS_SQL.getName())) {
return DbTypeEnum.MS_SQL;
} else {
return DbTypeEnum.MYSQL;
// url字符串中包含了dbTypeEnum的name则判定为该类型
for (DbTypeEnum dbTypeEnum : DbTypeEnum.values()) {
if (jdbcUrl.contains(dbTypeEnum.getUrlWords())) {
return dbTypeEnum;
}
}
return DbTypeEnum.MYSQL;
}
}

View File

@ -32,6 +32,8 @@ public class SysConfigDataFactory {
return new MssqlSysConfigData();
} else if (DbTypeEnum.ORACLE.equals(dbType)) {
return new OracleSysConfigData();
} else if (DbTypeEnum.DM.equals(dbType)) {
return new OracleSysConfigData();
}
return new MysqlSysConfigData();
}

View File

@ -1,75 +0,0 @@
/*
* Copyright [2020-2030] [https://www.stylefeng.cn]
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* GunsAPACHE LICENSE 2.0使
*
* 1.LICENSE
* 2.Guns
* 3.
* 4. https://gitee.com/stylefeng/guns
* 5. https://gitee.com/stylefeng/guns
* 6.
*/
package cn.stylefeng.roses.kernel.db.api.enums;
import lombok.Getter;
/**
*
* <p>
* mapping.xml
*
* @author fengshuonan
* @date 2020/6/20 21:08
*/
@Getter
public enum DbTypeEnum {
/**
* mysql
*/
MYSQL("mysql", "select 1"),
/**
* pgsql
*/
PG_SQL("postgresql", "select version()"),
/**
* oracle
*/
ORACLE("oracle", "select 1 from dual"),
/**
* mssql
*/
MS_SQL("sqlserver", "select 1");
/**
* datasource url
*/
private final String code;
/**
* sql
*/
private final String validateQuery;
DbTypeEnum(String code, String validateQuery) {
this.code = code;
this.validateQuery = validateQuery;
}
}

View File

@ -25,8 +25,8 @@
package cn.stylefeng.roses.kernel.db.api.factory;
import cn.hutool.core.util.StrUtil;
import cn.stylefeng.roses.kernel.db.api.enums.DbTypeEnum;
import cn.stylefeng.roses.kernel.db.api.pojo.druid.DruidProperties;
import cn.stylefeng.roses.kernel.rule.enums.DbTypeEnum;
import com.alibaba.druid.pool.DruidDataSource;
import lombok.extern.slf4j.Slf4j;
@ -117,14 +117,10 @@ public class DruidDatasourceFactory {
* @date 2020/10/16 16:12
*/
private static String getValidateQueryByUrl(String url) {
if (url.contains(DbTypeEnum.ORACLE.getCode())) {
return DbTypeEnum.ORACLE.getValidateQuery();
}
if (url.contains(DbTypeEnum.MS_SQL.getCode())) {
return DbTypeEnum.MS_SQL.getValidateQuery();
}
if (url.contains(DbTypeEnum.PG_SQL.getCode())) {
return DbTypeEnum.PG_SQL.getValidateQuery();
for (DbTypeEnum value : DbTypeEnum.values()) {
if (url.contains(value.getUrlWords())) {
return value.getValidateQuery();
}
}
return DbTypeEnum.MYSQL.getValidateQuery();

View File

@ -24,7 +24,8 @@
*/
package cn.stylefeng.roses.kernel.db.api.sqladapter;
import cn.stylefeng.roses.kernel.db.api.enums.DbTypeEnum;
import cn.stylefeng.roses.kernel.rule.enums.DbTypeEnum;
/**
* sql使sql
@ -43,13 +44,16 @@ public abstract class AbstractSql {
* @date 2020/10/31 23:44
*/
public String getSql(String jdbcUrl) {
if (jdbcUrl.contains(DbTypeEnum.ORACLE.getCode())) {
if (jdbcUrl.contains(DbTypeEnum.ORACLE.getUrlWords())) {
return oracle();
}
if (jdbcUrl.contains(DbTypeEnum.MS_SQL.getCode())) {
if (jdbcUrl.contains(DbTypeEnum.DM.getUrlWords())) {
return oracle();
}
if (jdbcUrl.contains(DbTypeEnum.MS_SQL.getUrlWords())) {
return sqlServer();
}
if (jdbcUrl.contains(DbTypeEnum.PG_SQL.getCode())) {
if (jdbcUrl.contains(DbTypeEnum.PG_SQL.getUrlWords())) {
return pgSql();
}
return mysql();

View File

@ -24,7 +24,7 @@
*/
package cn.stylefeng.roses.kernel.db.mp.dbid;
import cn.stylefeng.roses.kernel.db.api.enums.DbTypeEnum;
import cn.stylefeng.roses.kernel.rule.enums.DbTypeEnum;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.mapping.DatabaseIdProvider;
@ -66,21 +66,26 @@ public class CustomDatabaseIdProvider implements DatabaseIdProvider {
} catch (Exception e2) {
log.warn("CustomDatabaseIdProvider无法判断当前数据源类型默认选择Mysql类型");
return DbTypeEnum.MYSQL.getCode();
return DbTypeEnum.MYSQL.getUrlWords();
}
}
if (url.contains(DbTypeEnum.ORACLE.getCode())) {
return DbTypeEnum.ORACLE.getCode();
// 达梦和oracle使用同一种
if (url.contains(DbTypeEnum.ORACLE.getUrlWords())) {
return DbTypeEnum.ORACLE.getUrlWords();
}
if (url.contains(DbTypeEnum.MS_SQL.getCode())) {
return DbTypeEnum.MS_SQL.getCode();
}
if (url.contains(DbTypeEnum.PG_SQL.getCode())) {
return DbTypeEnum.PG_SQL.getCode();
if (url.contains(DbTypeEnum.DM.getUrlWords())) {
return DbTypeEnum.ORACLE.getUrlWords();
}
return DbTypeEnum.MYSQL.getCode();
if (url.contains(DbTypeEnum.MS_SQL.getUrlWords())) {
return DbTypeEnum.MS_SQL.getUrlWords();
}
if (url.contains(DbTypeEnum.PG_SQL.getUrlWords())) {
return DbTypeEnum.PG_SQL.getUrlWords();
}
return DbTypeEnum.MYSQL.getUrlWords();
}
}