2017-01-25 1 views
0

В настоящее время у меня есть несколько считывателей элементов для отдельных запросов к базе данных. Я хочу получить всю эту информацию в один объект. Есть ли тип ItemReader, который может сделать это для меня? Я бы хотел, чтобы процессор и Writer обрабатывали этот объект после чтения чтения в виде одного объекта. Поэтому в основном мне нужно создать объект из группы ItemReaders и использовать его с этой точки в качестве моего единственного источника данных для обработки и записи. Следует отметить, что я не могу изменить существующие ItemReaders из-за того, что он является большей частью проекта.Создайте класс ItemReader, который собирает данные от читателей подзаголовков

+0

Я бы сказал, что ваш подход испорчен для начала, и попытка обернуть этих слушателей в один из них - это больше проблем, чем это стоит. –

+0

В настоящее время у меня есть Field1Reader, Field2Reader, Field3Reader, и я хочу, чтобы читатель супер предметов, который мог вставлять данные в объект, который я создал – subhatt

+0

Как уже было сказано, ваш подход кажется ошибочным. Почему бы не написать один запрос для извлечения всего за один раз ... Вместо того, чтобы пытаться синхронизировать 3 считывателя в одном. –

ответ

1

Даже если вы не можете изменить существующее кодирование, я бы избегал использования нескольких считывателей и вместо этого рассматривал использование структуры ORM, такой как Hibernate, в новом читателе?

В качестве альтернативы создайте новый читатель, используя JdbcCursorItemReader, и просто соедините 3 (или более) таблицы вместе с вашим указателем движения и сопоставьте результирующий набор с вашим пользовательским объектом. Если соединения приведут к тому, что курсор вернет несколько строк на объект, я сначала предложил бы вернуться и посмотреть на спящий режим. Если Hibernate не является вариантом, вы можете расширить SingleItemPeekableItemReader, чтобы перебирать курсор до тех пор, пока вы полностью не построили свои объекты.

Example using SingleItemPeekableItemReader.

Смежные вопросы