若依框架如何配置双数据源?如何同时配置mysql和oracle数据源?
在Spring Boot项目中配置双数据源通常涉及到使用Spring Data JPA或MyBatis等ORM框架。以下是一个配置双数据源的基本步骤,以及一个使用Spring Data JPA的示例配置。
步骤:
- 配置主数据源(例如MySQL)。
- 配置第二数据源(例如Oracle)。
- 创建两个独立的
EntityManagerFactory
实例,每个数据源对应一个。 - 配置
AbstractRoutingDataSource
来实现数据源的路由。
示例代码:
@Configuration
public class DataSourceConfig {
@Bean
@Primary
@ConfigurationProperties(prefix = "spring.datasource.mysql")
public DataSource mysqlDataSource() {
return DataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties(prefix = "spring.datasource.oracle")
public DataSource oracleDataSource() {
return DataSourceBuilder.create().build();
}
@Bean
public JpaVendorAdapter jpaVendorAdapter() {
return new HibernateJpaVendorAdapter();
}
@Bean
@Primary
public LocalContainerEntityManagerFactoryBean mysqlEntityManagerFactory(
EntityManagerFactoryBuilder builder,
@Qualifier("mysqlDataSource") DataSource mysqlDataSource) {
return builder
.dataSource(mysqlDataSource)
.packages("com.yourpackage.mysql") // 设置实体类所在位置
.persistenceUnit("mysqlPU")
.build();
}
@Bean
public LocalContainerEntityManagerFactoryBean oracleEntityManagerFactory(
EntityManagerFactoryBuilder builder,
@Qualifier("oracleDataSource") DataSource oracleDataSource) {
return builder
.dataSource(oracleDataSource)
.packages("com.yourpackage.oracle") // 设置实体类所在位置
.persistenceUnit("oraclePU")
.build();
}
// 配置路由数据源
// ...
}
在application.properties
或application.yml
中配置数据源:
spring.datasource.mysql.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.mysql.username=myuser
spring.datasource.mysql.password=mypass
spring.datasource.oracle.url=jdbc:oracle:thin:@localhost:1521:mydb
spring.datasource.oracle.username=oracleuser
spring.datasource.oracle.password=oraclepass
spring.datasource.oracle.driver-class-name=oracle.jdbc.OracleDriver
在实体类和Repository接口中,确保每个数据源对应的包路径是正确的,并且在查询时指定正确的数据源。
// 实体类和Repository接口分别位于不同的包路径
package com.yourpackage.m
评论已关闭