package com.artfess.base.datasource; import javax.sql.DataSource; import com.baomidou.mybatisplus.annotation.DbType; /** * 当前数据源上下文接口 * * @company 阿特菲斯信息技术有限公司 * @author heyifan * @email heyf@jee-soft.cn * @date 2020年4月22日 */ public interface DatabaseContext { /** * 通过数据源别名设置当前数据源 *
* 1.请尽量使用注解@DS("alias")来切换数据源,该注解可以用* @param alias * @return */ DatabaseSwitchResult setDataSource(String alias); /** * 通过别名获取数据源 *
在方法或者类上,其数据源切换的作用域仅限于该方法或该类; * 2.如不能使用注解时可以调用本方法切换数据源,但是需要采用
try(DatabaseSwitchResult result = databaseContext.setDataSource(alias)){
}
这样的方式调用,因为切换的数据源最终需要清除。 *
* 1.首先从当前多数据源池获取别名所对应的数据源; * 2.没获取到时尝试从系统数据源管理的库表中查找对应连接池,找到后初始化数据源并加入当前数据源池。 ** @param alias * @return */ DataSource getDataSourceByAlias(String alias); /** * 获取当前线程的数据源 * @return */ DataSource getDataSource(); /** * 获取当前数据源的DbType * @return */ DbType getDbTypeObj(); /** * 获取当前线程数据源类型 * @return */ String getDbType(); /** * 获取指定别名数据源的数据库类型 * @param alias * @return */ String getDbTypeByAlias(String alias); }