♻️ 重构 SqlProviderFactory 优化支持 PG数据库

(cherry picked from commit 9341a4e184284cd13e76c1dee2896da4f600b3b9)
This commit is contained in:
冷冷 committed 2024-08-21 21:51:31 +08:00
1 parent d2735da63e
commit bc5c573099
1 file changed
+64 -66
@@ -1,7 +1,6 @@
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;
@@ -11,7 +10,6 @@ import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Optional;
/**
* sql语句提供工厂
@@ -24,80 +22,80 @@ import java.util.Optional;
@RequiredArgsConstructor
public class SqlProviderFactory {
private final Optional<DruidDataSource> druidDataSourceOptional;
private final SequenceDbProperties dbProperties;
private final SequenceDbProperties dbProperties;
private final List<SqlProvider> sqlProviders;
private final List<SqlProvider> sqlProviders;
private final Environment environment;
private final Environment environment;
public SqlProvider getSqlProvider() {
DbType dbType = null;
public SqlProvider getSqlProvider() {
DbType dbType = null;
if (druidDataSourceOptional.isPresent()) {
String url = druidDataSourceOptional.get().getUrl();
// druid 形式 进行降级获取
if (StrUtil.isBlank(url)) {
url = environment.getProperty("spring.datasource.druid.url");
}
String url = environment.getProperty("spring.datasource.druid.url");
if (StrUtil.isNotBlank(url)) {
dbType = JdbcUtils.getDbType(url);
}
dbType = JdbcUtils.getDbType(url);
}
else {
dbType = dbProperties.getDbType();
}
if (dbType == null) {
dbType = dbProperties.getDbType();
}
for (SqlProvider sqlProvider : sqlProviders) {
if (sqlProvider.support(dbType)) {
return sqlProvider;
}
}
throw new UnsupportedOperationException("不支持的数据源");
}
for (SqlProvider sqlProvider : sqlProviders) {
if (sqlProvider.support(dbType)) {
return sqlProvider;
}
}
throw new UnsupportedOperationException("不支持的数据源");
}
/**
* 获取插入范围语句
* @return 插入范围语句
*/
public String getCreateTableSql() {
SqlProvider sqlProvider = getSqlProvider();
return sqlProvider.getCreateTableSql();
}
/**
* 获取插入范围语句
*
* @return 插入范围语句
*/
public String getCreateTableSql() {
SqlProvider sqlProvider = getSqlProvider();
return sqlProvider.getCreateTableSql();
}
/**
* 获取插入范围语句
* @return 插入范围语句
*/
public String getInsertRangeSql() {
SqlProvider sqlProvider = getSqlProvider();
return sqlProvider.getInsertRangeSql();
}
/**
* 获取插入范围语句
*
* @return 插入范围语句
*/
public String getInsertRangeSql() {
SqlProvider sqlProvider = getSqlProvider();
return sqlProvider.getInsertRangeSql();
}
/**
* 获取查询范围语句
* @return
*/
public String getSelectRangeSql() {
SqlProvider sqlProvider = getSqlProvider();
return sqlProvider.getSelectRangeSql();
}
/**
* 获取查询范围语句
*
* @return
*/
public String getSelectRangeSql() {
SqlProvider sqlProvider = getSqlProvider();
return sqlProvider.getSelectRangeSql();
}
/**
* 获取更新范围语句
* @return 更新范围语句
*/
public String getUpdateRangeSql() {
SqlProvider sqlProvider = getSqlProvider();
return sqlProvider.getUpdateRangeSql();
}
/**
* 获取更新范围语句
*
* @return 更新范围语句
*/
public String getUpdateRangeSql() {
SqlProvider sqlProvider = getSqlProvider();
return sqlProvider.getUpdateRangeSql();
}
/**
* 获取是否创建表语句
* @return SQL语句
*/
public String getExistTableSql() {
SqlProvider sqlProvider = getSqlProvider();
return sqlProvider.getExistTableSql();
}
/**
* 获取是否创建表语句
*
* @return SQL语句
*/
public String getExistTableSql() {
SqlProvider sqlProvider = getSqlProvider();
return sqlProvider.getExistTableSql();
}
}