Как читать из нескольких RepositoryItemReaders и записывать в один RepositoryItemWriter - PullRequest
0 голосов
/ 06 марта 2020

Я пытаюсь прочитать примерно 7-8 различных таблиц базы данных, затем объединить все эти данные в одну, которая затем будет записана в один файл JSON. Поскольку Reader и Writer, кажется, тесно связаны и обслуживают одно чтение и одну запись, мне было интересно, есть ли способ прочитать несколько источников данных и объединить их в процессоре в один выход, используя RepositoryItemReader и RepositoryItemWriter.

1 Ответ

0 голосов
/ 07 марта 2020

Хорошо, вы можете использовать композиционный шаблон, внедрив пользовательский ItemReader, который внутренне содержит эти 7-8 RepositoryItemReaders. В вашем пользовательском ItemReader вы используете эти RepositoryItemReaders, чтобы собрать все данные в объект контейнера или кортежа и передать их в ItemProcessor для обработки.

Код выглядит так:

public class MyItemReader implements ItemReader<Tuple> {

    private RepositoryItemReader r1;
    private RepositoryItemReader r2;
    private RepositoryItemReader r3;
    ......
    private RepositoryItemReader r6;
    private RepositoryItemReader r7;

    public Tuple read(){
        return new Tuple(r1.read(),r2.read() ....., r6.read() , r7.read());
    }

}

public class Tuple {
    private Table1 t1;
    private Table2 t2;
    private Table3 t3;
    .....
    private Table6 t6;
    private Table7 t7;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...