2010-09-07 4 views
0

Je dois écrire un travail dans lequel je dois lire la base de données 2 fois.Comment envoyer les données de 2 lecteurs jdbc à un fichier plat en utilisant Spring Batch

La première requête ne renvoie qu'un seul enregistrement et j'ai besoin d'envoyer cet enregistrement comme en-tête de mon fichier plat.
La deuxième requête renvoie un ensemble d'enregistrements que j'ai besoin d'écrire dans le même fichier plat.

J'ai essayé de créer un compositewriter pour elle et dans ce que j'ai fourni deux flatFileItemWriter et définir même nom de ressource pour les deux flatFileItemWriters. Mais il en résulte une erreur que la ressource existe déjà. Quelqu'un peut-il me dire l'approche que je devrais suivre.

Merci d'avance.

Répondre

1

Ecrivez dans deux fichiers différents avec FlatFileItemWriter et dans une troisième étape ajoutez les fichiers.

0

Ecrivez votre bean en tenant compte de votre deuxième requête qui retourne un ensemble d'enregistrements. Pour la partie d'en-tête, vous attribuez un FlatFileHeaderCallback à votre FlatFileItemWriter et obtenez l'enregistrement d'en-tête.

public class MyFileHeaderCallback implements FlatFileHeaderCallback { 
    @Override 
    public void writeHeader(Writer writer) throws IOException { 
     writer.write("#I have this line from a query"); 
    } 
} 

<bean id="headerCallback" class="com.file.MyFileHeaderCallback" /> 

<bean id="productItemWriter" class="org.*.file.FlatFileItemWriter"> 
<property name="headerCallback" ref="headerCallback" /> 
<!-- other necessary methods for your Writer --> 
</bean> 
Questions connexes