Как отправить данные двух читателей jdbc в один плоский файл с помощью Spring Batch - PullRequest
0 голосов
/ 07 сентября 2010

Мне нужно написать работу, в которой я должен читать базу данных 2 раза.

Первый запрос возвращает только одну запись, и мне нужно отправить эту запись в качестве заголовка моего плоского файла.
Второй запрос возвращает набор записей, которые мне нужно записать в тот же плоский файл.

Я попытался создать compositewriter для него, и в рамках этого я предоставил два flatFileItemWriter и установил одно и то же имя ресурса для обоих flatFileItemWriters. Но это приводит к ошибке, что ресурс уже существует .

Может кто-нибудь сказать мне подход, которому я должен следовать.

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 24 мая 2011

Записать в два разных файла с помощью FlatFileItemWriter и на третьем шаге добавить файлы.

0 голосов
/ 14 июля 2012

Напишите ваш бин с учетом вашего второго запроса, который возвращает набор записей.Для части заголовка вы передаете FlatFileHeaderCallback в качестве свойства для вашего FlatFileItemWriter и получаете там запись заголовка.

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...