Java 使用JDBCTemplate在单个查询中提供多个数据源
我有两个数据源连接DS1和DS2。我正在使用JDBC模板。我有如下的条件select语句,它将使用两个数据源从DS1.table1和DS2.table2中进行选择 可以在一个JDBC查询中连接两个模式吗Java 使用JDBCTemplate在单个查询中提供多个数据源,java,sql,spring-jdbc,jdbctemplate,Java,Sql,Spring Jdbc,Jdbctemplate,我有两个数据源连接DS1和DS2。我正在使用JDBC模板。我有如下的条件select语句,它将使用两个数据源从DS1.table1和DS2.table2中进行选择 可以在一个JDBC查询中连接两个模式吗 searchResult = this.jdbcTemplate.query(search_query, parameterValues.toArray(new Object[parameterValues.size()]), new ManageMapper()); StringBuild
searchResult = this.jdbcTemplate.query(search_query, parameterValues.toArray(new Object[parameterValues.size()]), new ManageMapper());
StringBuilder search_query = new StringBuilder();
search_query.append(...................);
.
.
.
.
stringBuilder.append(" left join schema1.table t1 on t1.emp_id = t111.emp_id ");
if (searchRequest.getOnboardStatus() != null && (searchRequest.getOnboardStatus().equals("True")) {
stringBuilder.append(" inner join schema2.table2 t2 on t2.dept_id = t222.dept_id and t222.to_dt is null");
}
@Autowired
@Qualifier(value = "jdbcDS1")
protected JdbcTemplate jdbcDS1Template;
@Autowired
@Qualifier(value = "jdbcDS2")
protected JdbcTemplate jdbcDS2Template;
JDBC在DBMS级别运行,生成用于执行的SQL代码。 一次只能将SQL发送到1个DBMS。在特殊情况下,DBMS引擎可以执行分布式查询,如Oracle RAC或并行查询。然而,DBMS控制着这一点
如果在超过1个JDBC数据源上使用多个DBMS模式,DBMS不知道其他模式中的其他数据在哪里,因此对于多个JDBC数据源,这是无法做到的。但是,如果您知道模式驻留在1个DBMS中,那么您可以向该DBMS发送一个访问多个模式的查询。在Java端,您必须仅使用1个JDBC数据源来执行此操作。您的目的不是很清楚,如果您能清楚地说出您希望查询的方式,那就更好了。。但是,如果您拥有DS1对DS2的select权限,请以适当的方式准备查询。。我认为“spring”标签是无用的,需要“database”和“sql”标签,所以我编辑了你的问题。