需求
springboot设计开发一个系统,在这个系统的数据库表中存放着2000个数据库实例,有MySQL、Oracle、sql server3种数据库类型,用户可以在页面上选择不同的实例,连接这些实例上的数据库,来执行业务sql
实现
@Service
public class DatabaseService {
@Autowired
private DynamicDataSource dynamicDataSource;
@Autowired
private JdbcTemplate jdbcTemplate;
public void executeSqlOnDatabase(int instanceId, String sql) {
// 根据实例ID获取数据库实例信息
DatabaseInstance instance = databaseInstanceService.getInstanceById(instanceId);
if (instance == null) {
throw new IllegalArgumentException("Invalid database instance ID: " + instanceId);
}
// 构建数据源配置
HikariConfig config = new HikariConfig();
config.setJdbcUrl(generateJdbcUrl(instance));
config.setUsername(instance.getUsername());