2015-07-12 94 views
1

由於多個表連接,我讀取器中的查詢需要很長時間才能獲取結果。我正在考慮拆分我的查詢連接,如果可能的話,使用臨時表。這是一個可行的解決方案?可以批量支持讀寫器,處理器和寫入器之間使用臨時表嗎?彈簧批中的臨時表

+0

你有沒有發現這方面的任何解決方案?我也想用臨時表。我應該在步驟之間使用相同的連接。怎麼樣? – Nishimu

回答

0

是的,這是可能的。你應該爲你的讀寫器,處理器使用Same DataSource實例。

例子:

@Component 

public class DataSourceDao{ 

    DataSource dataSource; 


    public DataSource getDataSource() { 
     return dataSource; 
    } 
    @Autowired 
    public void setDataSource(DataSource dataSource) { 
     this.dataSource = dataSource; 
    } 

} 

讀者:

public class MyReader implements ItemReader<POJO_CLASS> { 
     @Autowired 
     DataSourceDao dataSource; 

     @Override 
      JdbcCursorItemReader<POJO_CLASS> reader= new 
      JdbcCursorItemReader<>(); 

     public <POJO_CLASS> read() throws Exception, UnexpectedInputException, 
        ParseException, NonTransientResourceException { 

      reader.setDataSource(dataSource.getDataSource()); 
      // Implement your read logic 

     } 

} 

編劇:

public class YourWriter implements ItemWriter<POJO_CLASS> { 

    JdbcBatchItemWriter<POJO_CLASS> writer= new JdbcBatchItemWriter<>(); 

    @Autowired 
    DataSourceDao dataSource; 

void write(List<? extends POJO_CLASS> POJO) 
    { 
    writer.setDataSource(dataSource.getDataSource()); 
    <Your logics...> 

    }