MySql分庫技術

MySql分庫技術

XxxMgmDataSrouceConfig.java配置類

@Configuration
@MapperScan(basePackages = PipMgmDataSrouceConfig.PACKAGE, sqlSessionFactoryRef = "pipMgmSqlSessionFactory")
public class XxxMgmDataSrouceConfig {
    // 精確到 master 目錄,以便跟其他數據源隔離
    static final String PACKAGE = "com.xxx.pipbat.dao.mgm";
    static final String MAPPER_LOCATION = "classpath*:mapper/pipmgm/*.xml";


    @Value("${master.datasource.xxx.url}")
    private String url;

    @Value("${master.datasource.xxx.username}")
    private String user;

    @Value("${master.datasource.xxx.password}")
    private String password;

    @Value("${master.datasource.xxx.driverClassName}")
    private String driverClass;

    @Bean(name = "pipMgmDataSource")
    public DataSource pipMgmDataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driverClass);
        dataSource.setUrl(url);
        dataSource.setUsername(user);
        dataSource.setPassword(password);
        return dataSource;
    }

    @Bean(name = "pipMgmTransactionManager")
    public DataSourceTransactionManager pipMgmTransactionManager() {
        return new DataSourceTransactionManager(pipMgmDataSource());
    }

    @Bean(name = "pipMgmSqlSessionFactory")
    public SqlSessionFactory pipMgmSqlSessionFactory(@Qualifier("pipMgmDataSource") DataSource pipMgmDataSource)
            throws Exception {
        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(pipMgmDataSource);
        sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
                .getResources(PipMgmDataSrouceConfig.MAPPER_LOCATION));
        return sessionFactory.getObject();
    }
}

XxxBatDataSourceConfig.java配置類

@Configuration
@MapperScan(basePackages = PipBatDataSourceConfig.PACKAGE, sqlSessionFactoryRef = "pipBatSqlSessionFactory")
public class PipBatDataSourceConfig {
    // 精確到 master 目錄,以便跟其他數據源隔離
    static final String PACKAGE = "com.xxx.pipbat.dao.bat";
    static final String MAPPER_LOCATION = "classpath*:mapper/pipbat/*.xml";


    @Value("${master.datasource.pipbat.url}")
    private String url;

    @Value("${master.datasource.xxx.username}")
    private String user;

    @Value("${master.datasource.xxx.password}")
    private String password;

    @Value("${master.datasource.xxx.driverClassName}")
    private String driverClass;

    //只能有一個@Primary數據源
    @Bean(name = "pipBatDataSource")
    @Primary
    public DataSource pipBatDataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driverClass);
        dataSource.setUrl(url);
        dataSource.setUsername(user);
        dataSource.setPassword(password);
        return dataSource;
    }

    @Bean(name = "pipBatTransactionManager")
    @Primary
    public DataSourceTransactionManager pipBatTransactionManager() {
        return new DataSourceTransactionManager(pipBatDataSource());
    }

    @Bean(name = "pipBatSqlSessionFactory")
    @Primary
    public SqlSessionFactory pipBatSqlSessionFactory(@Qualifier("pipBatDataSource") DataSource pipBatDataSource)
        throws Exception {
        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(pipBatDataSource);
        sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
            .getResources(PipBatDataSourceConfig.MAPPER_LOCATION));
        return sessionFactory.getObject();
    }
}

application.properties 配置文件

master.datasource.pipbat.url=xxx
master.datasource.pipbat.username=xxx
master.datasource.pipbat.password=xxx
master.datasource.pipbat.driverClassName=com.mysql.jdbc.Driver
master.datasource.pipmgm.url=xxx
master.datasource.pipmgm.username=xxx
master.datasource.pipmgm.password=xxx
master.datasource.pipmgm.driverClassName=com.mysql.jdbc.Driver

學習Java的同學注意了!!!
學習過程中遇到什麼問題或者想獲取學習資源的話,歡迎加入Java學習交流羣,羣號碼:543120397 我們一起學Java!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章