2015-08-19 81 views
0

我想讀取多個表,以從這些表中的每個表中獲取幾個字段&將其寫入xml。 我創建了一個自定義ItemReader並有多個查詢。 我有兩個問題閱讀多個表Spring批次ItemReader

1)我的讀者進入一個infinte循環,因爲我不知道什麼時候&如何返回null

2)什麼是合併來自多個表中的數據的最佳方式&其發送到ItemWriter?

public class SolrTransformProductReader implements ItemReader <ProductWithPrograms> { 


    @Autowired 
    private JdbcTemplate jdbcTemplate; 

    private String sql1 = "Select PRODUCT_CODE from product"; 
    private String sql2 = "Select PRODUCT_CODE, CONTRIBUTOR_ID from product_Contributor"; 

    @Override 
    public ProductWithPrograms read() throws Exception { 

     SqlRowSet productRows = jdbcTemplate.queryForRowSet(sql1); 

     while(productRows.next()) { 

      System.out.println("Product Code " + productRows.getString("PRODUCT_CODE")); 
      ProductWithPrograms pp = new ProductWithPrograms(); 
      pp.setProduct_Code(productRows.getString("PRODUCT_CODE")); 
      return pp; 
     } 

     return null; 

    } 

} 

而且我的XML是如下

<job id="SEG_SolrTransformation" xmlns="http://www.springframework.org/schema/batch"> 
     <batch:step id="solrProductTransformation"> 
      <tasklet> 
       <chunk reader="solrTransformProductReader" writer="solrTransformProductWriter" commit-interval="999" /> 
      </tasklet> 
     </batch:step> 
    </job> 
+0

我認爲你可以容納http://stackoverflow.com/questions/21304364/spring-batch-job-read-from-multiple-數據庫以滿足您的需求 –

回答

0

更好嘗試使用JdbcPgingItemReader讀取數據,這是由Spring Batch的提供。您可以爲每個表創建作業的啓動multile實例並將其轉換爲xml。

您可以指定選擇,從,where子句作爲作業參數

+0

您能否提供樣本片段或git鏈接或網址等來支持您的答案? – Prateek