package cn.huge.module.config;
|
|
// import com.baomidou.dynamic.datasource.provider.DynamicDataSourceProvider;
|
// import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
|
// import org.apache.ibatis.session.SqlSessionFactory;
|
// import org.mybatis.spring.SqlSessionFactoryBean;
|
// import org.mybatis.spring.SqlSessionTemplate;
|
// import org.springframework.beans.factory.annotation.Autowired;
|
// import org.springframework.beans.factory.annotation.Qualifier;
|
// import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
|
// import org.springframework.boot.context.properties.ConfigurationProperties;
|
// import org.springframework.boot.jdbc.DataSourceBuilder;
|
// import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Configuration;
|
// import org.springframework.context.annotation.Primary;
|
// import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
|
// import org.springframework.jdbc.datasource.DataSourceTransactionManager;
|
// import org.springframework.transaction.PlatformTransactionManager;
|
// import org.springframework.web.context.WebApplicationContext;
|
//
|
// import javax.sql.DataSource;
|
|
@Configuration
|
public class MasterDataSourceConfig {
|
|
// /**
|
// * 创建主数据源
|
// *
|
// * 该方法通过DataSourceBuilder创建一个数据源实例,并将其配置为主数据源
|
// * 主数据源的配置属性通过前缀"spring.datasource.dynamic.datasource.master"进行绑定
|
// *
|
// * @return DataSource 主数据源实例
|
// */
|
// @Primary // 表示默认数据源
|
// @Bean("masterDataSource")
|
// @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.master")
|
// public DataSource createMasterDataSource(){
|
// return DataSourceBuilder.create().build();
|
// }
|
//
|
// /**
|
// * 创建主数据库连接的SqlSessionFactory
|
// * 该方法配置了MyBatis的SqlSessionFactory,用于管理主数据源的数据库会话
|
// *
|
// * @param dataSource 主数据源,标记为@Qualifier("masterDataSource")以区分其他数据源
|
// * @return SqlSessionFactory实例,用于生成SqlSession以与主数据库交互
|
// * @throws Exception 如果工厂 bean 初始化失败,则抛出异常
|
// *
|
// * 注意:这里使用了@Primary注解,表示当多个同类Bean存在时,优先使用该Bean
|
// * 这是因为在大多数情况下,主数据库是默认的、优先的数据库连接
|
// */
|
// @Primary
|
// @Bean("masterSqlSessionFactory")
|
// public SqlSessionFactory masterSqlSessionFactory(@Qualifier("masterDataSource") DataSource dataSource) throws Exception {
|
// // SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
|
// // 使用自定义的MybatisSqlSessionFactoryBean来构建SqlSessionFactory
|
// MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();
|
// // 设置数据源为传入的主数据源
|
// bean.setDataSource(dataSource);
|
// // mapper的xml形式文件位置必须要配置,不然将报错:no statement (这种错误也可能是mapper的xml中,namespace与项目的路径不一致导致)
|
// // 配置MyBatis映射文件的位置,确保MyBatis能找到映射文件
|
// bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/xml/*.xml"));
|
// // 返回构建好的SqlSessionFactory对象
|
// return bean.getObject();
|
// }
|
//
|
// /**
|
// * 配置事务管理器
|
// *
|
// * 该方法配置并返回一个DataSourceTransactionManager实例,用于管理数据源的事务
|
// * 主要通过注入主数据源(masterDataSource)来实现事务管理
|
// *
|
// * @param dataSource 主数据源,通过Qualifier注解指定数据源为masterDataSource
|
// * @return DataSourceTransactionManager实例,用于管理事务
|
// */
|
// @Primary
|
// @Bean(name = "masterTransactionManager")
|
// public DataSourceTransactionManager masterTransactionManager(@Qualifier("masterDataSource") DataSource dataSource) {
|
// // 创建DataSourceTransactionManager实例并设置数据源
|
// DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager(dataSource);
|
//
|
// // 设置在提交事务失败时自动回滚
|
// dataSourceTransactionManager.setRollbackOnCommitFailure(true);
|
//
|
// // 设置在事务参与者失败时全局回滚
|
// dataSourceTransactionManager.setGlobalRollbackOnParticipationFailure(true);
|
//
|
// // 返回配置好的DataSourceTransactionManager实例
|
// return dataSourceTransactionManager;
|
// }
|
//
|
// /**
|
// * 创建并配置主数据库的SqlSessionTemplate
|
// *
|
// * @param sqlSessionFactory 主数据库的SqlSessionFactory
|
// * @return 主数据库的SqlSessionTemplate实例
|
// */
|
// @Primary
|
// @Bean("masterSqlSessionTemplate")
|
// public SqlSessionTemplate masterSqlSessionTemplate(@Qualifier("masterSqlSessionFactory") SqlSessionFactory sqlSessionFactory){
|
// return new SqlSessionTemplate(sqlSessionFactory);
|
// }
|
}
|