springboot整合mybatis配置多数据源,支持Oracle和gbase
时间: 2025-02-23 14:33:25 浏览: 75
Spring Boot 整合 MyBatis 配置多数据源,主要是为了在单个应用中处理不同数据库的操作,例如处理Oracle用于事务记录、GBase用于读取缓存数据。以下是基本步骤:
1. 添加依赖:在`pom.xml`中添加对spring-boot-starter-data-jpa和各自数据源驱动的依赖,例如Oracle和GBase。
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId> <!-- Oracle数据源 -->
</dependency>
<dependency>
<groupId>com.hankcs</groupId>
<artifactId>gbase-sdk-java</artifactId> <!-- GBase数据源 -->
</dependency>
```
2. 配置数据源:创建DataSource bean,每个数据源对应一个名称(如`oracleDS`和`gbaseDS`),并设置各自的URL、用户名和密码。
```java
@Configuration
@ConfigurationProperties(prefix = "spring.datasource")
public class DataSourceConfig {
private String oracleDs;
private String gbaseDs;
// ... getters and setters
}
@Bean(name = "oracleDS")
@ConfigurationProperties(prefix = "spring.datasource.oracle")
public DataSource oracleDataSource() {
// Oracle 数据源配置
DruidDataSource dataSource = new DruidDataSource();
// 设置属性...
return dataSource;
}
@Bean(name = "gbaseDS")
@ConfigurationProperties(prefix = "spring.datasource.gbase")
public DataSource gbaseDataSource() {
// GBase 数据源配置
// 这里需要调整为GBase连接相关的属性...
return dataSource;
}
```
3. 创建MyBatis的Configuration:分别为每个数据源创建一个SqlSessionFactoryBean,并指定对应的DataSource。
```java
@Bean(name = "sqlSessionFactoryOracle")
public SqlSessionFactory sqlSessionFactoryOracle(DataSource oracleDataSource) throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(oracleDataSource);
return factoryBean.getObject();
}
@Bean(name = "sqlSessionFactoryGbase")
public SqlSessionFactory sqlSessionFactoryGbase(DataSource gbaseDataSource) throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(gbaseDataSource);
return factoryBean.getObject();
}
```
4. 注解映射器:在Repository接口上使用@MapperScan注解扫描相应的数据源下的Mapper接口。
```java
@Repository
public interface OracleMapper extends BaseMapper<T>, JpaEntityMapper<T> {
// ...
}
@Repository
@MapperScan("com.example.mapper.GBaseMapper") // GBase对应的Mapper包名
public interface GBaseMapper {
// ...
}
```
阅读全文
相关推荐


















