1
由於多個表連接,我讀取器中的查詢需要很長時間才能獲取結果。我正在考慮拆分我的查詢連接,如果可能的話,使用臨時表。這是一個可行的解決方案?可以批量支持讀寫器,處理器和寫入器之間使用臨時表嗎?彈簧批中的臨時表
由於多個表連接,我讀取器中的查詢需要很長時間才能獲取結果。我正在考慮拆分我的查詢連接,如果可能的話,使用臨時表。這是一個可行的解決方案?可以批量支持讀寫器,處理器和寫入器之間使用臨時表嗎?彈簧批中的臨時表
是的,這是可能的。你應該爲你的讀寫器,處理器使用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...>
}
你有沒有發現這方面的任何解決方案?我也想用臨時表。我應該在步驟之間使用相同的連接。怎麼樣? – Nishimu