考虑一种情况,其中所有客户端数据都存储在其自己的数据库/目录中,并且所有此类数据库都存储在单个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时动态更改数据库/目录


基础教程推荐
- Android开发Kotlin实现圆弧计步器示例详解 2023-02-04
- jsp页面中表达式语言中的$符号不起作用的解决方法 2023-08-02
- Java实现顺序表的操作详解 2023-05-19
- Java / MySQL – 日期时间问题 2023-10-31
- 如何将java或javaweb项目打包为jar包或war包 2023-02-26
- Java基于Socket实现多人聊天室 2023-05-08
- Linux Centos安装jdk 之前照着网上安装了好多次 结果都是javac编译失败,出现javac :command not found 2023-09-01
- jsp学习之scriptlet的使用方法详解 2023-07-30
- 关于mybatis-plus逻辑删除自动填充更新时间的问题 2023-02-10
- Reactor 多任务并发执行且结果按顺序返回第一个 2023-05-24