Я пытаюсь создать пакетную программу в Spring, которая вызывает мою базу данных через программу чтения, используя JdbcCursorItemReader. Я предполагаю, что после создания средства чтения элементов этот шаг выполняет итерацию по нему. Далее речь идет о средстве записи, я хочу вызвать метод write(Chunk chunks), который я переопределяю из ItemWriter, но он никогда его не вызывает. и когда я это сделаю (предположим, я поместил customReader.read() в read() в построителе шагов), я не могу сделать то же самое с write(Chunk chunks), поскольку он принимает параметр.
Я получил реализацию для работы, где я создаю две функции в моем файле конфигурации: read() и write(), где Reader вызывает read() в customReader, возвращая средство чтения элементов. Затем я перебираю его, добавляя каждую запись в чанк (список), созданный вне методов. Затем я бы вернул читателя, когда он стал нулевым. Затем, когда писатель был вызван в части писателя в построителе шагов, я снова вызвал метод в своей конфигурации, но на этот раз метод писателя. Потребовалось бы взять этот Chunk(List), который я создал вне методов, и использовать его в качестве параметра для write() в моем классе customWriter. тогда я бы просто вернул введенный мной объект customWriter. Это было вдохновлено тем, что я увидел в документации.
https://docs.spring.io/spring-batch/ref ... ssing.html
Но, судя по тому, что я слышал, это не то, как это следует делать, поскольку это основная работа, и я могу сбить ее с толку, когда работа станет больше или что-то в этом роде. Что-то насчет шага .chunk(chunkSize,transactionManager), до сих пор не уверен.
Я надеялся на какое-то руководство по этой проблеме, которая у меня возникла. Если вам нужна дополнительная информация, не стесняйтесь спрашивать.
Изменить:
Предоставление кода
Читатель:public JdbcCursorItemReader itemReader() throws Exception {
System.out.println("We are in the database reader");
PreparedStatementSetter preparedStatementSetter=new PreparedStatementSetter() {
@Override
public void setValues(PreparedStatement ps) throws SQLException {
//code...
}
};
Chunk items=new Chunk();
JdbcCursorItemReader itemReader = new JdbcCursorItemReader();
itemReader.setDataSource(dataSource);
itemReader.setPreparedStatementSetter(preparedStatementSetter);
itemReader.setName("name");
itemReader.setSql("SQL"); //assume there is code in there and it works
itemReader.setRowMapper(new CustomRowMapper());
ExecutionContext executionContext = new ExecutionContext();
itemReader.open(executionContext);
int counter = 0;
Object myEntity = new Object();
while(myEntity != null){
myEntity = itemReader.read();
if(myEntity==null) break;
items.add( myEntity);
counter++;
}
itemReader.close();
return itemReader;
}
Писатель:
@Override
public void write(Chunk
Подробнее здесь: https://stackoverflow.com/questions/790 ... stomerwrit
Как мне получить свой собственный метод Reader для передачи фрагментов методу Write(Chunk<> chunk) моего клиента на этап ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Преобразуйте java.io.Reader в другой Reader, пропустив чтение некоторых символов.
Anonymous » » в форуме JAVA - 0 Ответы
- 34 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Преобразуйте java.io.Reader в другой Reader, пропустив чтение некоторых символов.
Anonymous » » в форуме JAVA - 0 Ответы
- 30 Просмотры
-
Последнее сообщение Anonymous
-