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!

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