Spring Boot 入门示例(十一):Spring Boot 集成 MyBatis(XML 方式)实现多数据源配置

在实际开发中,我们会遇到一个应用需要访问多个数据源的情况。因此,我们需要配置多个数据源。这里我们来看看使用 MyBatis(XML 方式)实现多数据源配置。

添加相关依赖

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.1</version>
</dependency>
复制代码

配置数据源信息

  • application.properties
# 数据源一
spring.datasource.primary.jdbc-url=jdbc:mysql://localhost:3306/game?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
spring.datasource.primary.username=root
spring.datasource.primary.password=root
spring.datasource.primary.driver-class-name=com.mysql.jdbc.Driver

# 数据源二
spring.datasource.secondary.jdbc-url=jdbc:mysql://localhost:3306/product?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
spring.datasource.secondary.username=root
spring.datasource.secondary.password=root
spring.datasource.secondary.driver-class-name=com.mysql.jdbc.Driver
复制代码

配置多数据源

集成 MyBatis 配置数据源步骤如下:

Datasource
SqlSessionFactroy
DataSourceTransactionManager
SqlSessionTemplate

最关键的地方就是数据源配置这部分,需要一层一层注入,先创建 DataSource
,再创建 SqlSessionFactory
,然后再创建事务管理DataSourceTransactionManager
,最后包装到 SqlSessionTemplate
中。

数据源一

@Configuration
@MapperScan(basePackages = "com.example.mybatis.mapper.primary", sqlSessionTemplateRef = "PrimarySqlSessionTemplate")
public class DataSourcePrimaryConfig {

    @Bean(name = "PrimaryDataSource")
    @Primary
    @ConfigurationProperties(prefix = "spring.datasource.primary")
    public DataSource dataSourcePrimary() {
       return new DruidDataSource();
    }

    @Bean(name = "PrimarySqlSessionFactory")
    @Primary
    public SqlSessionFactory sqlSessionFactoryPrimary(@Qualifier("PrimaryDataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource);
        sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver()
                .getResources("classpath:mybatis/mapper/primary/*.xml"));

        return sqlSessionFactoryBean.getObject();
    }

    @Bean(name = "PrimaryTransactionManager")
    @Primary
    public DataSourceTransactionManager transactionManagerPrimary(@Qualifier("PrimaryDataSource") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }

    @Bean(name = "PrimarySqlSessionTemplate")
    @Primary
    public SqlSessionTemplate sqlSessionTemplatePrimary(@Qualifier("PrimarySqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
        return new SqlSessionTemplate(sqlSessionFactory);
    }

}
复制代码

数据源二

@Configuration
@MapperScan(basePackages = "com.example.mybatis.mapper.secondary", sqlSessionTemplateRef = "SecondarySqlSessionTemplate")
public class DataSourceSecondaryConfig {

    @Bean(name = "SecondaryDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.secondary")
    public DataSource dataSource() {
        return new DruidDataSource();
    }

    @Bean(name = "SecondarySqlSessionFactory")
    public SqlSessionFactory sqlSessionFactorySecondary(@Qualifier("SecondaryDataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(dataSource);
        factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver()
                .getResources("classpath:mybatis/mapper/secondary/*.xml"));

        return factoryBean.getObject();

    }

    @Bean(name = "SecondaryTransactionManager")
    public DataSourceTransactionManager transactionManagerSecondary(@Qualifier("SecondaryDataSource") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }

    @Bean(name = "SecondarySqlSessionTemplate")
    public SqlSessionTemplate sqlSessionTemplateSecondary(@Qualifier("SecondarySqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
        return new SqlSessionTemplate(sqlSessionFactory);
    }
}
复制代码

以上配置完成之后,集成 MyBatis 多数据源配置就已经完成了,接下来就可以操作数据啦!

最后,详细代码可以查看本示例的 Demo。

原文 

https://juejin.im/post/5e92a64151882573ca36781b

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Spring Boot 入门示例(十一):Spring Boot 集成 MyBatis(XML 方式)实现多数据源配置

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址