广州市综治平台后端
xusd
2025-06-07 36306491396230522fa20585c2621a7fc899849a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
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);
    // }
}