Springboot Mybatis 多数据源配置以及使用
在Spring Boot中配置多数据源并使用MyBatis时,可以通过以下步骤进行:
- 配置数据源属性。
- 配置数据源。
- 配置SqlSessionFactory。
- 配置Mapper接口。
以下是一个简单的例子:
@Configuration
public class DataSourceConfig {
@Bean
@ConfigurationProperties("spring.datasource.primary")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties("spring.datasource.secondary")
public DataSource secondaryDataSource() {
return DataSourceBuilder.create().build();
}
}
@Configuration
public class MyBatisConfig {
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
return sessionFactory.getObject();
}
@Bean
@Primary
public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
@Configuration
@MapperScan(basePackages = "com.example.mapper.primary", sqlSessionTemplateRef = "sqlSessionTemplate")
public class PrimaryDataSourceConfig {
@Bean
public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
@Configuration
@MapperScan(basePackages = "com.example.mapper.secondary", sqlSessionTemplateRef = "secondarySqlSessionTemplate")
public class SecondaryDataSourceConfig {
@Bean
public SqlSessionFactory secondarySqlSessionFactory(@Qualifier("secondaryDataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
return sessionFactory.getObject();
}
@Bean
public SqlSessionTemplate secondarySqlSessionTemplate(SqlSessionFactory secondarySqlSessionFactory) {
return new SqlSessionTemplate(secondarySqlSessionFactory);
}
}
在这个例子中,我们定义了两个数据源primaryDataSource
和secondaryDataSource
,并为每个数据源配置了对应的SqlSessionFactory
和SqlSessionTemplate
。通过@MapperScan
注解指定了每个数据源对应的Mapper接口的位置和使用的SqlSessionTemplate
。
确保在application.properties
或application.yml
中配置了正确的数据源属性。例如:
spring:
datasource:
primary:
url: jdbc:mysql://localhost:3306/primary_db
username: user
pa
评论已关闭