2017-06-14 88 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