【问题标题】:Spring batch read multiple record and process multiple recordsSpring批量读取多条记录并处理多条记录
【发布时间】:2023-03-02 21:45:01
【问题描述】:

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

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

我尝试使用 JdbcPagingItemReader 并将 pageSize 设置为 50,它读取 50 条记录,但 rowMapper、处理器和写入器一次接收一条记录,而不是获取 50 条记录。

如何让处理器和写入器在 dto 中获得 50 条记录,而不是一次接收一条记录?

xml 弹簧配置

<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 弹簧配置

@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;
}

【问题讨论】:

    标签: java spring-batch


    【解决方案1】:

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

    【讨论】:

    【解决方案2】:

    在Spring批处理论坛中回答

    http://forum.springsource.org/showthread.php?136209-JdbcPagingItemReader-not-passing-all-page-records-to-the-processor&p=442538#post442538

    您想要处理每条记录都是设计使然。 ItemWriter 获得尽可能多的记录,但受提交间隔的约束。你的是 1,这意味着每条记录都是单独提交的,我建议你将它设置为 50。处理器自己处理每条记录,直到达到提交间隔,然后调用 writer。如前所述,您的是 1。

    【讨论】:

      猜你喜欢
      • 2020-03-18
      • 2017-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多