【8.3.4】【db】增加数据库名称替换工具

master
stylefeng 2025-05-04 17:44:39 +08:00
parent 66a4f50b4b
commit 808f7ad458
1 changed files with 66 additions and 0 deletions

View File

@ -0,0 +1,66 @@
package cn.stylefeng.roses.kernel.db.api.util;
import cn.hutool.core.util.StrUtil;
import cn.stylefeng.roses.kernel.rule.enums.DbTypeEnum;
import cn.stylefeng.roses.kernel.rule.util.DatabaseTypeUtil;
/**
* url
*
* @author fengshuonan
* @since 2025/1/16 16:21
*/
public class DbNameReplaceUtil {
/**
* URL
*
* @param databaseUrl URL
* @param databaseName
* @return URL
* @author fengshuonan
* @since 2025/5/4 17:44
*/
public static String replaceDatabaseName(String databaseUrl, String databaseName) {
if (StrUtil.isBlank(databaseName)) {
return databaseUrl;
}
// 如果是mysql
if (DbTypeEnum.MYSQL.equals(DatabaseTypeUtil.getDbType(databaseUrl))) {
// 获取url中最后一个“/”的位置
int firstPosition = databaseUrl.lastIndexOf("/");
// 获取url中“?”的位置
int lastPosition = databaseUrl.lastIndexOf("?");
// 将传入的数据库名称替换url中的数据库名称
StringBuilder sbu = new StringBuilder(databaseUrl);
sbu.replace(firstPosition + 1, lastPosition, databaseName);
return sbu.toString();
}
// 如果是postgreSQL
else if (DbTypeEnum.PG_SQL.equals(DatabaseTypeUtil.getDbType(databaseUrl))) {
// 获取url中最后一个“/”的位置
int firstPosition = databaseUrl.lastIndexOf("/");
return databaseUrl.substring(0, firstPosition + 1) + databaseName;
}
// 如果是SQL SERVER
else if (DbTypeEnum.MS_SQL.equals(DatabaseTypeUtil.getDbType(databaseUrl))) {
// 获取url中最后一个“=”的位置
int firstPosition = databaseUrl.lastIndexOf("=");
return databaseUrl.substring(0, firstPosition + 1) + databaseName;
}
// 如果是Oracle不做处理
else if (DbTypeEnum.ORACLE.equals(DatabaseTypeUtil.getDbType(databaseUrl))) {
return databaseUrl;
}
return databaseUrl;
}
}