我想让我的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