From 4d653bcc7b65fed4d92f294d90e890f1280adef8 Mon Sep 17 00:00:00 2001 From: lbw Date: Tue, 26 Sep 2023 10:08:24 +0800 Subject: [PATCH] =?UTF-8?q?:recycle:=20Refactoring=20code.=20=E9=80=82?= =?UTF-8?q?=E9=85=8D=E6=9C=80=E6=96=B0=E7=9A=84=20shardingsphere=20?= =?UTF-8?q?=E5=88=86=E5=BA=93=E5=88=86=E8=A1=A8=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pigx-common/pigx-common-sequence/pom.xml | 5 ++++ .../properties/SequenceDbProperties.java | 8 +++++- .../impl/db/provider/SqlProviderFactory.java | 25 +++++++++++++------ 3 files changed, 30 insertions(+), 8 deletions(-) diff --git a/pigx-common/pigx-common-sequence/pom.xml b/pigx-common/pigx-common-sequence/pom.xml index 4c8ba03b3..524b8c823 100755 --- a/pigx-common/pigx-common-sequence/pom.xml +++ b/pigx-common/pigx-common-sequence/pom.xml @@ -28,5 +28,10 @@ com.baomidou mybatis-plus-extension + + com.alibaba + druid-spring-boot-starter + true + diff --git a/pigx-common/pigx-common-sequence/src/main/java/com/pig4cloud/pigx/common/sequence/properties/SequenceDbProperties.java b/pigx-common/pigx-common-sequence/src/main/java/com/pig4cloud/pigx/common/sequence/properties/SequenceDbProperties.java index 9c1fc3231..a9c3729c1 100644 --- a/pigx-common/pigx-common-sequence/src/main/java/com/pig4cloud/pigx/common/sequence/properties/SequenceDbProperties.java +++ b/pigx-common/pigx-common-sequence/src/main/java/com/pig4cloud/pigx/common/sequence/properties/SequenceDbProperties.java @@ -5,6 +5,7 @@ package com.pig4cloud.pigx.common.sequence.properties; * @date 2019-05-26 */ +import com.baomidou.mybatisplus.annotation.DbType; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @@ -20,6 +21,11 @@ import org.springframework.stereotype.Component; @ConfigurationProperties(prefix = "pigx.xsequence.db") public class SequenceDbProperties extends BaseSequenceProperties { + /** + * 默认数据库类型 + */ + private DbType dbType = DbType.MYSQL; + /** * 表名称 */ @@ -30,4 +36,4 @@ public class SequenceDbProperties extends BaseSequenceProperties { */ private int retryTimes = 1; -} \ No newline at end of file +} diff --git a/pigx-common/pigx-common-sequence/src/main/java/com/pig4cloud/pigx/common/sequence/range/impl/db/provider/SqlProviderFactory.java b/pigx-common/pigx-common-sequence/src/main/java/com/pig4cloud/pigx/common/sequence/range/impl/db/provider/SqlProviderFactory.java index 8ac91b318..0ffd4d80f 100644 --- a/pigx-common/pigx-common-sequence/src/main/java/com/pig4cloud/pigx/common/sequence/range/impl/db/provider/SqlProviderFactory.java +++ b/pigx-common/pigx-common-sequence/src/main/java/com/pig4cloud/pigx/common/sequence/range/impl/db/provider/SqlProviderFactory.java @@ -1,15 +1,17 @@ package com.pig4cloud.pigx.common.sequence.range.impl.db.provider; import cn.hutool.core.util.StrUtil; +import com.alibaba.druid.pool.DruidDataSource; import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.extension.toolkit.JdbcUtils; +import com.pig4cloud.pigx.common.sequence.properties.SequenceDbProperties; import lombok.RequiredArgsConstructor; -import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties; import org.springframework.context.annotation.Lazy; import org.springframework.core.env.Environment; import org.springframework.stereotype.Component; import java.util.List; +import java.util.Optional; /** * sql语句提供工厂 @@ -22,20 +24,29 @@ import java.util.List; @RequiredArgsConstructor public class SqlProviderFactory { - private final DataSourceProperties dataSourceProperties; + private final Optional druidDataSourceOptional; + + private final SequenceDbProperties dbProperties; private final List sqlProviders; private final Environment environment; public SqlProvider getSqlProvider() { - String url = dataSourceProperties.getUrl(); - // druid 形式 进行降级获取 - if (StrUtil.isBlank(url)) { - url = environment.getProperty("spring.datasource.druid.url"); + DbType dbType = null; + if (druidDataSourceOptional.isPresent()) { + String url = druidDataSourceOptional.get().getUrl(); + // druid 形式 进行降级获取 + if (StrUtil.isBlank(url)) { + url = environment.getProperty("spring.datasource.druid.url"); + } + + JdbcUtils.getDbType(url); + } + else { + dbType = dbProperties.getDbType(); } - DbType dbType = JdbcUtils.getDbType(url); for (SqlProvider sqlProvider : sqlProviders) { if (sqlProvider.support(dbType)) { return sqlProvider;