详细 介绍springboot mybatis多数据源
时间: 2023-05-20 08:05:24 浏览: 158
springboot-mdatasource.zip
Spring Boot 是一个快速开发框架,MyBatis 是一个优秀的 ORM 框架,多数据源是指在一个应用程序中使用多个数据库。Spring Boot 集成 MyBatis 可以很方便地实现多数据源。
首先,在 pom.xml 文件中添加 MyBatis 和数据库驱动的依赖。然后,在 application.properties 文件中配置多个数据源的连接信息,如下所示:
```
# 数据源1
spring.datasource.url=jdbc:mysql://localhost:3306/db1
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# 数据源2
datasource2.url=jdbc:mysql://localhost:3306/db2
datasource2.username=root
datasource2.password=123456
datasource2.driver-class-name=com.mysql.jdbc.Driver
```
接下来,创建多个数据源的配置类,如下所示:
```
@Configuration
@MapperScan(basePackages = "com.example.mapper1", sqlSessionTemplateRef = "sqlSessionTemplate1")
public class DataSource1Config {
@Bean
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource dataSource1() {
return DataSourceBuilder.create().build();
}
@Bean
public SqlSessionFactory sqlSessionFactory1(@Qualifier("dataSource1") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
return bean.getObject();
}
@Bean
public SqlSessionTemplate sqlSessionTemplate1(@Qualifier("sqlSessionFactory1") SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
@Configuration
@MapperScan(basePackages = "com.example.mapper2", sqlSessionTemplateRef = "sqlSessionTemplate2")
public class DataSource2Config {
@Bean
@ConfigurationProperties(prefix = "datasource2")
public DataSource dataSource2() {
return DataSourceBuilder.create().build();
}
@Bean
public SqlSessionFactory sqlSessionFactory2(@Qualifier("dataSource2") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
return bean.getObject();
}
@Bean
public SqlSessionTemplate sqlSessionTemplate2(@Qualifier("sqlSessionFactory2") SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
```
最后,在需要使用数据源的地方注入对应的 SqlSessionTemplate 即可,如下所示:
```
@Autowired
@Qualifier("sqlSessionTemplate1")
private SqlSessionTemplate sqlSessionTemplate1;
@Autowired
@Qualifier("sqlSessionTemplate2")
private SqlSessionTemplate sqlSessionTemplate2;
```
这样就可以在一个应用程序中使用多个数据源了。
阅读全文