我想讓我的Spring批量應用程序一次從數據庫中讀取50條記錄,然後將這50條記錄發送給處理器,然後發送給作者。Spring批量讀取多條記錄並處理多條記錄
有人可以告訴我如何做到這一點。
我試過使用JdbcPagingItemReader並將pageSize設置爲50,它讀取50條記錄,但rowMapper,處理器和寫入器一次只接收一條記錄,而不是獲取50條記錄。
我該怎麼做才能使處理器和寫入器在dto中獲得50條記錄,而不是一次接收一條記錄?
XML Spring配置
<job id="indexJob" job-repository="jobRepository">
<step id="job1">
<tasklet transaction-manager="transactionManager">
<chunk reader="reader" processor="processor" writer="writer" commit-interval="1"/>
</tasklet>
</step>
</job>
的Java Spring配置
@Bean
@Scope("step")
public JdbcPagingItemReader reader() throws Exception {
MySqlPagingQueryProvider provider = new MySqlPagingQueryProvider();
provider.setSelectClause("select id");
provider.setFromClause("from BATCH_CUSTOMER");
provider.setSortKey("id");
JdbcPagingItemReader reader = new JdbcPagingItemReader();
reader.setDataSource(this.dataSource());
reader.setQueryProvider(provider);
reader.setPageSize(50);
reader.setRowMapper(new MyRowMapper());
reader.afterPropertiesSet();
int counter = 0;
ExecutionContext executionContext = new ExecutionContext();
reader.open(executionContext);
Object pageCredit = new Object();
while (pageCredit != null) {
pageCredit = reader.read();
System.out.println("pageCredit:" + pageCredit);
counter++;
}
reader.close();
return reader;
}
這沒有奏效。 MyRowMapper,處理器和編寫器一次只能獲得一條記錄。 – hajime 2013-04-08 15:51:22
http://forum.springsource.org/showthread.php?136209-JdbcPagingItemReader-not-passing-all-page-records-to-the-processor&p=442538#post442538 – hajime 2013-04-09 12:29:53