请提供springboot连接双数据源的方法以及使用例子
时间: 2023-09-10 15:15:48 浏览: 41
好的,下面是连接双数据源的方法以及使用例子。
1. 配置数据源
首先,在application.yml或application.properties中配置两个数据源的相关信息,如下所示:
```
spring.datasource.primary.url=jdbc:mysql://localhost:3306/primary
spring.datasource.primary.username=root
spring.datasource.primary.password=root
spring.datasource.secondary.url=jdbc:mysql://localhost:3306/secondary
spring.datasource.secondary.username=root
spring.datasource.secondary.password=root
```
2. 配置数据源和事务管理器
在配置类中配置数据源和事务管理器,如下所示:
```java
@Configuration
public class DataSourceConfig {
@Bean(name = "primaryDataSource")
@Qualifier("primaryDataSource")
@ConfigurationProperties(prefix = "spring.datasource.primary")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "secondaryDataSource")
@Qualifier("secondaryDataSource")
@ConfigurationProperties(prefix = "spring.datasource.secondary")
public DataSource secondaryDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "primaryTransactionManager")
public PlatformTransactionManager primaryTransactionManager(@Qualifier("primaryDataSource") DataSource primaryDataSource) {
return new DataSourceTransactionManager(primaryDataSource);
}
@Bean(name = "secondaryTransactionManager")
public PlatformTransactionManager secondaryTransactionManager(@Qualifier("secondaryDataSource") DataSource secondaryDataSource) {
return new DataSourceTransactionManager(secondaryDataSource);
}
}
```
3. 配置JdbcTemplate
在配置类中配置JdbcTemplate,如下所示:
```java
@Configuration
public class JdbcTemplateConfig {
@Bean(name = "primaryJdbcTemplate")
public JdbcTemplate primaryJdbcTemplate(@Qualifier("primaryDataSource") DataSource primaryDataSource) {
return new JdbcTemplate(primaryDataSource);
}
@Bean(name = "secondaryJdbcTemplate")
public JdbcTemplate secondaryJdbcTemplate(@Qualifier("secondaryDataSource") DataSource secondaryDataSource) {
return new JdbcTemplate(secondaryDataSource);
}
}
```
4. 使用JdbcTemplate
在需要使用JdbcTemplate的地方注入即可,如下所示:
```java
@Service
public class UserService {
@Autowired
@Qualifier("primaryJdbcTemplate")
private JdbcTemplate primaryJdbcTemplate;
@Autowired
@Qualifier("secondaryJdbcTemplate")
private JdbcTemplate secondaryJdbcTemplate;
public void addUser(User user) {
String sql = "insert into user(id, name, age) values(?,?,?)";
primaryJdbcTemplate.update(sql, user.getId(), user.getName(), user.getAge());
}
public List<User> getUsers() {
String sql = "select * from user";
return secondaryJdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class));
}
}
```
以上就是连接双数据源的方法以及使用例子。