```
/**
* @author 张跃帅
* @Description: 数据源操作-工具类
* @date 2020/08/12
*/
public class DatasourceUtil {
/**
* 通用的数据源
*/
private static final DataSource commonDb = SpringUtil.getBean(DataSource.class);
/**
* 主数据源-客户端
*/
private static final MasterDbClient masterDbClient = SpringUtil.getBean(MasterDbClient.class);
/**
* 获取-当前使用中-数据源
*/
public static DataSource getCurrDb() {
// 动态路由数据源
DynamicRoutingDataSource commDb = (DynamicRoutingDataSource) commonDb;
// 获取数据源
return commDb.determineDataSource();
}
/**
* 获取-当前使用中-数据源名称
*/
public static String getCurrDbName() {
// 获取当前线程数据源名称
return DynamicDataSourceContextHolder.peek();
}
/**
* 切换-主数据源
*/
public static void changeMasterDb() {
/**
* 强制清空本地线程
* 备注:当强制清空本地线程后,会自动使用默认数据源,默认数据源就是主库
*/
DynamicDataSourceContextHolder.clear();
}
/**
* 切换-指定数据源
*/
public static void changeDb(String dbName) {
// 判断
if (StrUtil.isNotBlank(dbName)) {
// 切换-目标数据源
DynamicDataSourceContextHolder.push(dbName);
}
}
/**
* 获取-主数据源名称
*/
public static String getMasterDbName() {
// 获取主数据源URL
String masterDbUrl = masterDbClient.getUrl();
// 变量-数据源名称
String dbName = null;
// 判断
if (StrUtil.isNotBlank(masterDbUrl)) {
// 判断-数据源类型
if (masterDbUrl.contains(DbTypeEnum.MYSQL.getCode())) {
// 定义正则表达式
Pattern pattern = Pattern.compile("jdbc:(?<db>\\w+):.*((//)|@)(?<host>.+):(?<port>\\d+)(/|(;DatabaseName=)|:)(?<dbName>\\w+)\\??.*");
// 匹配
Matcher matcher = pattern.matcher(masterDbUrl);
// 判断
if (matcher.find()) {
// 获取-数据源名称
dbName = matcher.group("dbName");
}
}
}
// 返回
return dbName;
}
/**
* 获取-指定的数据源
*/
public static DataSource getDbByDbName(String dbName) {
// 判断
if (StrUtil.isNotBlank(dbName)) {
// 动态路由数据源
DynamicRoutingDataSource commDb = (DynamicRoutingDataSource) commonDb;
// 返回-数据源
return commDb.getDataSource(dbName);
}
// 返回
return null;
}
/**
* 获取-所有的数据源名称
*/
public static List<String> getAllDbName() {
// 变量创建ArrayList
List<String> dbNameList = CollectionUtil.newArrayList();
// 动态路由数据源
DynamicRoutingDataSource commDb = (DynamicRoutingDataSource) commonDb;
// 获取Bean中所有数据源
Set<String> dbNameArray = commDb.getDataSources().keySet();
// 遍历
for (String dbName : dbNameArray) {
// 获取Bean中数据源名称
String beanDbName = dbName.toString();
// 添加到List
dbNameList.add(beanDbName);
}
// 返回
return dbNameList;
}
}
- Jump简介
- 技术架构
- 代码规范
- 规范导读
- JAVA规范
- 数据库表设计规范
- 集成项目
- JDK1.8-pom.xml
- JDK21-pom.xml
- 项目结构
- 业务模块-方法名称规范
- 跨域配置
- License授权配置
- 公共字段自动填充
- 全局异常处理器
- PageOffice配置
- Beetl模板引擎配置
- application.properties
- application-prod.yml
- banner.txt
- logback-spring.xml
- jump-core (核心组件)
- Maven依赖
- 通用枚举
- 公共数据状态 - 枚举
- 公共逻辑删除 - 枚举
- 公共操作编码类型 - 枚举
- 公共tree父节点 - 枚举
- 公共是或否 - 枚举
- 工具Util
- AopTargetUtil
- DownloadUtil
- GenerateNumUtil
- HttpServletUtil
- IpUtil
- JoinPointUtil
- MacUtil
- NetworkUtil
- ParamToUtil
- ResponseUtil
- TimeZoneDateUtil
- UaUtil
- 统一返回
- 结果对象
- 如何使用
- jump-cahche (缓存组件)
- Maven依赖
- Redis配置
- 缓存常量
- 工具Util
- RedisCacheUtil
- jump-idempotent (幕等组件)
- Maven依赖
- Context上下文
- 操作器
- 接口
- 如何实现
- AOP参数
- AOP使用方法
- jump-lock (分布式锁组件)
- Maven依赖
- 枚举
- AOP参数
- AOP使用方法
- 工具Util
- RedissonLockUtil
- Util使用方法
- jump-mybatis (mybatis组件)
- Maven依赖
- 基础Entity
- 枚举
- 查询类型 - 枚举
- 条件查询
- search
- service
- 分页结果集
- Mapper
- MyMapper
- 使用方法
- DDL操作
- DML操作
- 工具Util
- EntityUtil
- PageUtil
- TableUtil
- jump-dynamic-datasource (多数据源组件)
- Maven依赖
- Context上下文
- 操作器
- 接口
- 如何实现
- 工具Util
- DatasourceUtil
- 如何使用
- jump-satoken (satoken组件)
- Maven依赖
- Context上下文
- 操作器
- 接口
- 如何实现
- Satoken配置信息
- SatokenUser信息
- Redis缓存操作
- SatokenRedisCache
- SatokenUserRedisCache
- 放行白名单
- jump-oss (OSS组件)
- Maven依赖
- 工具Util
- OssFileUtil
- OssPlatformUtil
- 如何使用
- jump-xss (XSS组件)
- Maven依赖
- 白名单放行
- jump-email (邮件组件)
- Maven依赖
- Email客户端信息
- Email发送参数
- 工具Util
- jump-websocket (WebSocket组件)
- Maven依赖
- 消息对象
- 工具Util
- 如何使用
- jump-weixin (微信组件)
- Maven依赖
- jump-system (系统管理组件)
- Maven依赖
- AOP
- 系统操作日志AOP
- 系统数据日志AOP
- 系统操作权限AOP
- 字典转文本AOP
- Redis缓存操作
- SystemConfigRedisCache
- 工具Util
- LoginUserUtil
- SystemAreaUtil
- SystemHomeUtil
- SystemMenuUtil
- SystemOrgAdminUtil
- SystemOrgTypeUtil
- SystemRoleUtil
- SystemUserLoginAreaUtil
- SystemUserUtil
- jump-timer(定时器组件)
- Maven依赖
- 枚举
- Api接口
- 工具Util
- ActionClassUtil
- TimerTaskUtil
- 如何使用
- jump-ueditor (富文本组件)
- Maven依赖
- 如何使用
- 配置 ueditor.config.js
- 后端 application.properties
- 前端 vue3
- vue-codemirror (代码编译器)
- npm依赖
- PageOffice整合
- Maven依赖
- License授权配置
- 枚举
- 文件来源 - 枚举
- 预览文件类型 - 枚举
- 文件预览参数
- 下载文件
- 预览文件
- 工具Util