目 录CONTENT

文章目录

使用Spring Boot和MyBatis配置多数据源

在等晚風吹
2023-12-21 / 0 评论 / 0 点赞 / 23 阅读 / 0 字 / 正在检测是否收录...

使用Spring Boot和MyBatis配置多数据源

引言

在实际开发中,有时候我们需要连接多个数据库,可能是因为业务需求需要访问不同的数据库,或者为了提高性能、分离读写操作。Spring Boot和MyBatis提供了便捷的方式来配置和管理多个数据源。本文将详细介绍如何在Spring Boot项目中使用MyBatis配置多数据源。

1. 添加依赖

首先,在你的Spring Boot项目中,需要添加MyBatis和相关的依赖。在pom.xml文件中添加以下依赖:

<dependencies>
    <!-- 其他依赖... -->
    <!-- MyBatis 和 Spring Boot 集成依赖 -->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.2.0</version> <!-- 查看最新版本 -->
    </dependency>

    <!-- 数据源依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <!-- MySQL 驱动 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
</dependencies>

2. 配置数据源

application.properties(或application.yml)文件中配置多个数据源的连接信息。例如:

# 数据源1
spring.datasource.datasource1.url=jdbc:mysql://localhost:3306/db1
spring.datasource.datasource1.username=user1
spring.datasource.datasource1.password=password1
spring.datasource.datasource1.driver-class-name=com.mysql.cj.jdbc.Driver

# 数据源2
spring.datasource.datasource2.url=jdbc:mysql://localhost:3306/db2
spring.datasource.datasource2.username=user2
spring.datasource.datasource2.password=password2
spring.datasource.datasource2.driver-class-name=com.mysql.cj.jdbc.Driver

3. 创建数据源配置类

config包下创建一个名为DataSourceConfig的类,配置多个数据源:

@Configuration
public class DataSourceConfig {

    @Primary
    @Bean(name = "dataSource1")
    @ConfigurationProperties(prefix = "spring.datasource.datasource1")
    public DataSource dataSource1() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "dataSource2")
    @ConfigurationProperties(prefix = "spring.datasource.datasource2")
    public DataSource dataSource2() {
        return DataSourceBuilder.create().build();
    }
}

4. 配置MyBatis

创建MyBatis的配置类,用于配置SqlSessionFactorySqlSessionTemplate

@Configuration
@MapperScan(basePackages = "com.example.mapper1", sqlSessionFactoryRef = "sqlSessionFactory1")
public class MyBatisConfig1 {

    @Bean(name = "sqlSessionFactory1")
    public SqlSessionFactory sqlSessionFactory1(@Qualifier("dataSource1") DataSource dataSource)
            throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(dataSource);
        // 其他配置...
        return bean.getObject();
    }

    @Bean(name = "sqlSessionTemplate1")
    public SqlSessionTemplate sqlSessionTemplate1(
            @Qualifier("sqlSessionFactory1") SqlSessionFactory sqlSessionFactory) {
        return new SqlSessionTemplate(sqlSessionFactory);
    }
}

同样,如果有第二个数据源,创建一个类似的配置类。

5. 创建Mapper接口和XML文件

com.example.mapper1com.example.mapper2包下分别创建第一个和第二个数据源的Mapper接口,以及对应的XML文件。

6. 使用多数据源

在服务类中使用@Qualifier注解注入不同数据源的SqlSessionTemplate,然后使用对应的Mapper进行操作。例如:

@Service
public class MyService {

    @Autowired
    @Qualifier("sqlSessionTemplate1")
    private SqlSessionTemplate sqlSessionTemplate1;

    @Autowired
    @Qualifier("sqlSessionTemplate2")
    private SqlSessionTemplate sqlSessionTemplate2;

    // 使用 sqlSessionTemplate1 操作数据源1
    public void methodUsingDataSource1() {
        MyMapper1 mapper1 = sqlSessionTemplate1.getMapper(MyMapper1.class);
        // 执行数据库操作...
    }

    // 使用 sqlSessionTemplate2 操作数据源2
    public void methodUsingDataSource2() {
        MyMapper2 mapper2 = sqlSessionTemplate2.getMapper(MyMapper2.class);
        // 执行数据库操作...
    }
}

7. 测试

编写单元测试确保多数据源配置正常工作,可以使用Spring Boot提供的@SpringBootTest注解。

@SpringBootTest
class MultipleDataSourceTest {

    @Autowired
    private MyService myService;

    // 测试代码...
}

结论

通过以上步骤,你已经成功配置了Spring Boot项目中的多数据源,并使用MyBatis进行数据库操作。这样,你可以在应用中方便地访问不同的数据库,满足不同业务需求。

希望这篇文章对你理解和配置Spring Boot和MyBatis多数据源有所帮助。如有任何问题或建议,请随时提出。感谢阅读!

0

评论区