实现Java多数据源查询

一、流程图

erDiagram
    CUSTOMER ||--o| SALES : has
    CUSTOMER ||--o| PRODUCTS : buy

二、步骤

步骤 操作
1 配置多数据源
2 创建数据源类
3 编写查询服务类
4 调用查询方法

三、具体操作

1. 配置多数据源

首先,在application.propertiesapplication.yml文件中配置多个数据源信息。

2. 创建数据源类

// 主数据源配置
@Configuration
public class PrimaryDataSourceConfig {
    
    @Bean(name = "primaryDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.primary")
    public DataSource primaryDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "primaryJdbcTemplate")
    public JdbcTemplate primaryJdbcTemplate(@Qualifier("primaryDataSource") DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }
}

// 第二个数据源配置
@Configuration
public class SecondaryDataSourceConfig {
    
    @Bean(name = "secondaryDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.secondary")
    public DataSource secondaryDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "secondaryJdbcTemplate")
    public JdbcTemplate secondaryJdbcTemplate(@Qualifier("secondaryDataSource") DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }
}

3. 编写查询服务类

@Service
public class DataService {

    @Autowired
    @Qualifier("primaryJdbcTemplate")
    private JdbcTemplate primaryJdbcTemplate;

    @Autowired
    @Qualifier("secondaryJdbcTemplate")
    private JdbcTemplate secondaryJdbcTemplate;

    public List<Map<String, Object>> queryFromPrimary() {
        String sql = "SELECT * FROM table1";
        return primaryJdbcTemplate.queryForList(sql);
    }

    public List<Map<String, Object>> queryFromSecondary() {
        String sql = "SELECT * FROM table2";
        return secondaryJdbcTemplate.queryForList(sql);
    }
}

4. 调用查询方法

@RestController
public class DataController {

    @Autowired
    private DataService dataService;

    @GetMapping("/primary")
    public List<Map<String, Object>> queryPrimaryData() {
        return dataService.queryFromPrimary();
    }

    @GetMapping("/secondary")
    public List<Map<String, Object>> querySecondaryData() {
        return dataService.queryFromSecondary();
    }
}

四、总结

通过以上步骤,你已经成功实现了Java多数据源查询。在实际项目中,可以根据需要配置更多的数据源,并编写相应的查询服务类。

希望这篇文章对你有所帮助,祝你在Java开发的路上越走越远!