Java实现boot项目同时操作两个数据库执行crud操作
时间: 2023-12-16 09:03:51 浏览: 30
可以通过配置多个数据源来实现在一个Spring Boot项目中操作多个数据库。以下是实现步骤:
1. 在application.properties文件中配置第一个数据源的连接信息:
```
spring.datasource.url=jdbc:mysql://localhost:3306/db1
spring.datasource.username=username1
spring.datasource.password=password1
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
```
2. 在application.properties文件中配置第二个数据源的连接信息:
```
db2.datasource.url=jdbc:mysql://localhost:3306/db2
db2.datasource.username=username2
db2.datasource.password=password2
db2.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
```
3. 在项目中创建第一个数据源的配置类:
```java
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
entityManagerFactoryRef = "entityManagerFactory1",
transactionManagerRef = "transactionManager1",
basePackages = {"com.example.repository1"})
public class DataSource1Config {
@Primary
@Bean(name = "dataSource1")
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
@Primary
@Bean(name = "entityManagerFactory1")
public LocalContainerEntityManagerFactoryBean entityManagerFactory(EntityManagerFactoryBuilder builder,
@Qualifier("dataSource1") DataSource dataSource) {
return builder.dataSource(dataSource).packages("com.example.entity1").persistenceUnit("db1")
.build();
}
@Primary
@Bean(name = "transactionManager1")
public PlatformTransactionManager transactionManager(
@Qualifier("entityManagerFactory1") EntityManagerFactory entityManagerFactory) {
return new JpaTransactionManager(entityManagerFactory);
}
}
```
4. 在项目中创建第二个数据源的配置类:
```java
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
entityManagerFactoryRef = "entityManagerFactory2",
transactionManagerRef = "transactionManager2",
basePackages = {"com.example.repository2"})
public class DataSource2Config {
@Bean(name = "dataSource2")
@ConfigurationProperties(prefix = "db2.datasource")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "entityManagerFactory2")
public LocalContainerEntityManagerFactoryBean entityManagerFactory(EntityManagerFactoryBuilder builder,
@Qualifier("dataSource2") DataSource dataSource) {
return builder.dataSource(dataSource).packages("com.example.entity2").persistenceUnit("db2")
.build();
}
@Bean(name = "transactionManager2")
public PlatformTransactionManager transactionManager(
@Qualifier("entityManagerFactory2") EntityManagerFactory entityManagerFactory) {
return new JpaTransactionManager(entityManagerFactory);
}
}
```
5. 在需要使用数据源的地方,通过@Qualifier指定使用哪个数据源:
```java
@Service
public class SomeService {
@Autowired
@Qualifier("entityManagerFactory1")
private EntityManagerFactory emf1;
@Autowired
@Qualifier("entityManagerFactory2")
private EntityManagerFactory emf2;
public void save1(SomeEntity1 entity) {
EntityManager em = emf1.createEntityManager();
em.getTransaction().begin();
em.persist(entity);
em.getTransaction().commit();
em.close();
}
public void save2(SomeEntity2 entity) {
EntityManager em = emf2.createEntityManager();
em.getTransaction().begin();
em.persist(entity);
em.getTransaction().commit();
em.close();
}
}
```
通过上述步骤,就可以实现在一个Spring Boot项目中操作多个数据库。