考虑一种情况,其中所有客户端数据都存储在其自己的数据库/目录中,并且所有此类数据库都存储在单个RDBMS(客户端数据)中.主数据(例如客户端,……)保存在另一个RDBMS(主数据)中.我们如何通过JdbcTemplate动态访问客户端...
                
考虑一种情况,其中所有客户端数据都存储在其自己的数据库/目录中,并且所有此类数据库都存储在单个RDBMS(客户端数据)中.主数据(例如客户端,……)保存在另一个RDBMS(主数据)中.我们如何通过JdbcTemplate动态访问客户端数据RDBMS中的特定数据库?
为客户端数据RDBMS中的每个数据库定义DataSource,然后根据建议动态选择一个数据源here不是我们的选项,因为数据库是动态创建和销毁的.
我基本上需要像JDBC的Connection.setCatalog(String目录)这样的东西,但是我没有在Spring JdbcTemplate中找到类似的东西.
解决方法:
也许你可以用DelegatingDataSource包装数据源来调用getConnection()中的setCatalog()并在JdbcTemplate创建时使用包装的数据源:
class MyDelegatingDS extends DelegatingDataSource {
  private final String catalogName;
  public MyDelegatingDS(final String catalogName, final DataSource dataSource) {
    super(dataSource);
    this.catalogName = catalogName;
  }
  @Override
  public Connection getConnection() throws SQLException {
    final Connection cnx = super.getConnection();
    cnx.setCatalog(this.catalogName);
    return cnx;
  }
  // maybe also override the other getConnection();
}
// then use like that: new JdbcTemplate(new MyDelegatingDS("catalogName", dataSource)); 
 
本文标题为:java – 如何在使用Spring JdbcTemplate时动态更改数据库/目录
				
        
 
            
        - 详解Java ReentrantReadWriteLock读写锁的原理与实现 2023-06-16
 - Java循环结构之多重循环及continue break 2023-05-14
 - 如何在Java中判断两个Long类型是否相等 2023-05-24
 - SpringBoot使用Caffeine实现缓存的示例代码 2023-02-11
 - Java Maven依赖传递,可选依赖,排除依赖详解 2023-05-08
 - Kafka消费客户端协调器GroupCoordinator详解 2023-06-17
 - Java包机制及javadoc详解 2023-06-11
 - 四个Java常见分布式锁的选型和性能对比 2023-07-15
 - HttpClient实现文件上传功能 2023-04-12
 - 如何在MySQL数据库中建模保存自身实例的Java对象? 2023-11-02
 
						
						
						
						
						
				
				
				
				