gpt4 book ai didi

java - Spring批处理读取多条记录并处理多条记录

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:18:33 28 4
gpt4 key购买 nike

我希望我的 Spring 批处理应用程序一次从数据库中读取 50 条记录,然后将这 50 条记录发送到处理器,然后发送到编写器。

谁能告诉我如何做到这一点。

我试过使用 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;
}

最佳答案

在您的 xml 配置中,将提交间隔更改为 50。

关于java - Spring批处理读取多条记录并处理多条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15882304/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com