使用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的配置类,用于配置SqlSessionFactory
和SqlSessionTemplate
:
@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.mapper1
和com.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多数据源有所帮助。如有任何问题或建议,请随时提出。感谢阅读!
评论区