Spring Boot Mybatis plus 多数据源实践

云端漫步 2021-01-22 ⋅ 29 阅读

背景介绍

Spring Boot 是一个用于快速构建独立的、基于生产级的 Spring 应用程序的工具。它通过简化配置和提供常用功能的自动集成,大大减少了开发人员的工作量。

Mybatis plus 是 Mybatis 的增强工具集,它提供了更加便捷的数据访问和操作方式,可以极大地提高开发效率和代码质量。

在实际项目开发中,我们可能会面临多数据源的情况,即需要连接多个不同的数据库。这时,使用 Spring Boot 结合 Mybatis plus 来实现多数据源配置非常方便,本文将介绍具体的实践方法。

实现步骤

步骤一:添加依赖

pom.xml 文件中添加以下依赖:

<dependencies>
    <!-- Spring Boot -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>

    <!-- Mybatis plus -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>latest</version>
    </dependency>

    <!-- 数据库驱动 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
</dependencies>

步骤二:配置数据源

application.properties (或 application.yml) 文件中添加数据源配置,示例如下:

# 主数据源
spring.datasource.primary.url=jdbc:mysql://localhost:3306/db1
spring.datasource.primary.username=root
spring.datasource.primary.password=root
spring.datasource.primary.driver-class-name=com.mysql.cj.jdbc.Driver

# 第二个数据源
spring.datasource.secondary.url=jdbc:mysql://localhost:3306/db2
spring.datasource.secondary.username=root
spring.datasource.secondary.password=root
spring.datasource.secondary.driver-class-name=com.mysql.cj.jdbc.Driver

步骤三:创建数据源配置类

创建一个配置类,用于动态创建数据源,示例如下:

@Configuration
@ConditionalOnProperty(prefix = "spring.datasource.primary", name = "url")
@MapperScan(basePackages = "com.example.mapper.primary", sqlSessionTemplateRef = "primarySqlSessionTemplate")
public class PrimaryDataSourceConfig {
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.primary")
    public DataSource primaryDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean
    public SqlSessionFactory primarySqlSessionFactory(@Qualifier("primaryDataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(dataSource);
        return factoryBean.getObject();
    }

    @Bean
    public SqlSessionTemplate primarySqlSessionTemplate(@Qualifier("primarySqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
        return new SqlSessionTemplate(sqlSessionFactory);
    }
}

类似地,创建一个用于第二个数据源的配置类 SecondaryDataSourceConfig

步骤四:创建 DAO 和 Service

创建与数据库表对应的实体类和 DAO 接口,使用 @Mapper 注解标注,并编写相应的 CURD 方法。

接着,创建 Service 类,使用 @Service 注解标注,并注入对应的 DAO 依赖。在 Service 类中编写业务逻辑代码。

步骤五:测试多数据源

编写一个测试类,用于测试多数据源的功能,示例如下:

@SpringBootTest
public class MultiDataSourceTest {
    @Autowired
    private PrimaryUserMapper primaryUserMapper;

    @Autowired
    private SecondaryUserMapper secondaryUserMapper;

    @Test
    public void testMultiDataSource() {
        // 主数据源操作
        List<PrimaryUser> primaryUsers = primaryUserMapper.selectList(null);
        System.out.println("Primary DataSource: " + primaryUsers);

        // 第二个数据源操作
        List<SecondaryUser> secondaryUsers = secondaryUserMapper.selectList(null);
        System.out.println("Secondary DataSource: " + secondaryUsers);
    }
}

运行测试类,检查是否能正常访问和操作两个数据源中的数据。

总结

通过上述步骤,我们成功地实现了 Spring Boot 与 Mybatis plus 的多数据源配置。在实际项目中,可以根据具体需求添加更多的数据源,并根据需要添加对应的配置类和 DAO。这样,我们可以更加灵活地操作多个数据库,并简化了开发过程。

希望本文对大家对 Spring Boot + Mybatis plus 多数据源实践有所帮助。如有任何疑问或建议,请随时留言。


全部评论: 0

    我有话说: