Java 如果条目读取器未返回任何内容,如何跳过Spring批处理块中的条目编写器?

Java 如果条目读取器未返回任何内容,如何跳过Spring批处理块中的条目编写器?,java,spring,spring-batch,Java,Spring,Spring Batch,所以我有一个Spring批处理项目有一个重复的步骤 读取器是一个JdbcCursorItemReader,它还有一个RowMapper,用于将从数据库检索到的信息存储到POJO中。然后“myWriter”将POJO中设置的字段写入文本文件。这种情况经常发生(由cron指定) 当数据库为空且读取器无法读取任何内容时,如何设置一个条件以完全跳过itemWriter?在面向块的tasklet中,所有内容都是按块处理的,而不是所有项目。当读者没有读到任何东西时要跳过,你必须知道事实上没有任何项目;遇

所以我有一个Spring批处理项目有一个重复的步骤


读取器是一个
JdbcCursorItemReader
,它还有一个
RowMapper
,用于将从数据库检索到的信息存储到POJO中。然后
“myWriter”
将POJO中设置的字段写入文本文件。这种情况经常发生(由cron指定)


当数据库为空且读取器无法读取任何内容时,如何设置一个条件以完全跳过itemWriter?

在面向块的tasklet中,所有内容都是按块处理的,而不是所有项目。当读者没有读到任何东西时要跳过,你必须知道事实上没有任何项目;遇到一个空的数据块是不够的,因为以前可能有另一个数据块

一个简单的解决方法是,如果没有读取任何内容,只需让步骤继续。在这种情况下,作者将没有任何东西可写。假设您正在使用编写文件,您可以将其配置为不留下空文件。这是通过以下属性完成的:

标志,指示如果关闭时未写入任何行(页眉和页脚除外),则应删除目标文件。默认值为
false

因此,您只需要将writer的属性设置为
true
。如果没有写入任何内容,它将删除空文件