Java JdbcBatchItemWriter如何决定批大小?

Java JdbcBatchItemWriter如何决定批大小?,java,jdbc,spring-batch,batch-updates,itemwriter,Java,Jdbc,Spring Batch,Batch Updates,Itemwriter,我阅读了的文档,但注意到无法指定该类使用的jdbcTemplate的批大小。我认为一个名为Batch的类会有一些机制来指定批大小,但看起来情况并非如此。关于批量大小的确定,我现在有以下问题: 批大小是否等于提交间隔 如果否,是否由框架自动计算批量大小 最后但并非最不重要的一点是,在为JdbcBatchItemWriter类定义bean时,是否有方法显式指定要由jdbcTemplate中的

我阅读了的文档,但注意到无法指定该类使用的
jdbcTemplate
的批大小。我认为一个名为
Batch
的类会有一些机制来指定批大小,但看起来情况并非如此。关于批量大小的确定,我现在有以下问题:

  • 批大小是否等于提交间隔
  • 如果否,是否由框架自动计算批量大小
  • 最后但并非最不重要的一点是,在为
    JdbcBatchItemWriter
    类定义bean时,是否有方法显式指定要由
    jdbcTemplate
    中的
    使用的批大小将包括区块中的所有项目,该区块由
    提交间隔
    控制。因此,无论出于何种目的,您都可以将提交间隔视为批大小

    对上面的语句有一个警告:您的最后一个块的项目可能少于您的提交间隔。此外,如果使用ItemProcessor筛选任何记录,则传递给编写器的项目数将低于提交间隔。最后,还有一些自定义的
    CompletionPolicy
    场景,它们可能会导致提交的项目多于(或少于)提交间隔

    希望有帮助

    提交(或批大小)将包括区块中的所有项目,该区块由
    提交间隔
    控制。因此,无论出于何种目的,您都可以将提交间隔视为批大小

    对上面的语句有一个警告:您的最后一个块的项目可能少于您的提交间隔。此外,如果使用ItemProcessor筛选任何记录,则传递给编写器的项目数将低于提交间隔。最后,还有一些自定义的
    CompletionPolicy
    场景,它们可能会导致提交的项目多于(或少于)提交间隔


    希望有帮助

    伟大而有用的见解!我的问题只有一个方面没有得到回答,即如何向JdbcBatchItemWriter提供自定义的批处理大小?我的处理器通过将输入文件中的一行转换为多个输出对象来返回列表。因此,处理器将输入文件中的一行分解为输出对象的
    列表
    ,并发送给编写器。我不希望该步骤的提交间隔控制DB insert批大小,因为1个输入行等于要写入数据库的数万个输出行。这就是为什么我需要有一个与提交间隔不同的批处理大小。从您的回答和我的研究来看,
    JdbcBatchItemWriter
    显然不允许自定义批处理大小。我已经接受了你的回答,并发布了一个新的。请看一看,并提供您的意见。伟大和有用的见解!我的问题只有一个方面没有得到回答,即如何向JdbcBatchItemWriter提供自定义的批处理大小?我的处理器通过将输入文件中的一行转换为多个输出对象来返回列表。因此,处理器将输入文件中的一行分解为输出对象的
    列表
    ,并发送给编写器。我不希望该步骤的提交间隔控制DB insert批大小,因为1个输入行等于要写入数据库的数万个输出行。这就是为什么我需要有一个与提交间隔不同的批处理大小。从您的回答和我的研究来看,
    JdbcBatchItemWriter
    显然不允许自定义批处理大小。我已经接受了你的回答,并发布了一个新的。请看一看并提供您的意见。