2017-06-14 87 views
0

我确实只有单一的ItemReader有SQL查询阅读器。春季批| | JdbcPagingItemReader <T>是否支持多个DataSource支持跨多个数据源的连接查询?

但我查询的例外是从两个不同的数据源连接表,并提供单一的输出结果..像在单个查询下面

<bean id="userFinder" 
     class="org.springframework.batch.item.database.JdbcPagingItemReader" 
     scope="step"> 
    ... 
    ... 
      class="org.springframework.batch.item.database.support.SqlPagingQueryProviderFactoryBean"> 
      <property name="dataSource1" ref="dataSource1" /> 
      <property name="dataSource2" ref="dataSource2" /> 
      <property name="selectClause" 
       value="SELECT ALIAS1.COL1, ALIAS2.COL2 " /> 
      <property name="fromClause" value="FROM dataSource1.TABLE1.ALIAS1, dataSource2.TABLE 2.ALIAS2" /> 
      </property> 
      <property name="sortKey" value="WLT_ID" /> 
     </bean> 
    </property> 
+2

'DataSource'意思是一个实际的'java.sql.DataSource'?如果是这样,不。我不知道任何支持通过直接SQL连接数据库的技术...... –

+0

是的。在我的应用程序中,我有两个数据源可用作JNDI查找。在oracle后端中,这些被定义为一个单独的USER /模式。 我想从第一个数据源/架构与第二个数据源/架构的表2连接table1。在普通的SQL中,我们可以连接来自两个不同架构/用户的表,我正在看这个读者的支持。那可能吗? – Ketan

+0

替代方案是使用数据库链接(ORACLE),FEDERATED MySQL存储引擎(MySQL),Dblink(PostgreSQL)等。 – Thrax

回答

1

你将不能够连接两个不同的数据库。我认为在Java中,你将无法使用两个数据源来运行一个查询。

您可以编写自定义的ItemReader并注入两个数据源。 从这两个表中检索数据并在java代码中进行连接。但这将是非常昂贵的操作

+0

是的...想避免自定义实现。 – Ketan