2017-08-27 46 views
0

我配置它读取数据库中的一些项目Spring Batch的工作,做一些基本的过程和结果,应该创建CSV文件:Spring Batch的:FlatFileItem作家

<batch:job id="testJob" job-repository="jobRepository" parent="jobParent"> 
    <batch:step id="testStep" allow-start-if-complete="true"> 
     <batch:tasklet> 
      <batch:chunk 
        reader="testReader" 
        processor="testProcessor" 
        writer="testFileItemWriter" 
        commit-interval="1" 
      /> 
     </batch:tasklet>  
    </batch:step> 
</batch:job> 

<bean id="testReader" ...> 

<bean id="testProcessor" ...> 

<bean id="testFileItemWriter" class="org.springframework.batch.item.file.FlatFileItemWriter" scope="step"> 
    <property name="resource" value="file:test.csv" /> 
    <property name="lineAggregator"> 
     <bean class="org.springframework.batch.item.file.transform.DelimitedLineAggregator"> 
      <property name="delimiter" value=", "/> 
      <property name="fieldExtractor"> 
       <bean class="org.springframework.batch.item.file.transform.BeanWrapperFieldExtractor"> 
        <property name="names" value="testId, firstName, lastName, addressLine1, addressLine2, city, stateProvince, postalCode, 
        country" /> 
       </bean> 
      </property> 
     </bean> 
    </property> 
</bean> 

但是,即使读者得到这个CSV文件被创建从数据库0项目。 因此结果是创建空的CSV文件。

我怎么能做到这一点,当读者没有发现数据库中的任何项目,然后不创建空文件(不称呼作家)?

回答

1

在您的作者中,请在下面添加属性,如果由作者创建,这将删除一个空文件。

<property name="shouldDeleteIfEmpty" value="true" />