2017-08-27 2 views
0

Je configurer traitement par lots de printemps qui est lu une élément de base de données, faire un processus de base et comme résultat devrait créer un fichier csv:Spring Batch: FlatFileItem Writer

<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> 

Mais ce fichier CSV est créé, même lorsque le lecteur se de la base de données 0 articles. Donc, comme le résultat est créé fichier CSV vide.

Comment est-ce que je pourrais faire cela quand le lecteur n'a pas trouvé d'articles dans la base de données alors ne pas créer le dossier vide (pas l'auteur d'appel)?

Répondre

1

Dans votre la rédaction, s'il vous plaît ajouter ci-dessous la propriété, cela va supprimer un fichier vide si créé par l'auteur.

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