目 录CONTENT

文章目录

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

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

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

在实际应用中,使用Spring Boot和MyBatis Plus配置多数据源可以帮助我们处理不同业务需求或提高性能。下面是一个详细的步骤,演示如何在Spring Boot项目中使用MyBatis Plus配置多数据源。

1. 添加依赖

首先,在pom.xml文件中添加MyBatis Plus的依赖:

<dependencies>
    <!-- 其他依赖... -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.4.3</version> <!-- 查看最新版本 -->
    </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 {

    @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 Plus

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

@Configuration
@MapperScan(basePackages = "com.example.mapper1", sqlSessionTemplateRef = "sqlSessionTemplate1")
public class MyBatisPlusConfig1 {

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

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

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

5. 创建Mapper接口

com.example.mapper1com.example.mapper2包下分别创建第一个和第二个数据源的Mapper接口。

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 Plus进行数据库操作。这样,你可以在应用中方便地访问不同的数据库,满足不同业务需求。

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

0

评论区