Я написал обработчик предметов, который возвращает список объектов. Этот объект необходимо разбить на 2 таблицы базы данных (один родитель и потомок). Одна строка заголовка, и для этого соответствующего идентификатора заголовка у нас есть дочерние строки, связанные в дочерней таблице. Я использовал пример ListUnpackingItemWriter для решения проблемы списка. Я использовал CompositeItemWriter, чтобы разделить результат на 2 писателя, теперь мне нужно разделить каждый из них для заголовка и дочерней таблицы. Теперь у каждого писателя одинаковое количество строк. Есть ли лучший способ сделать это? Решите обе проблемы первичного ключа таблицы. Мне нужен пример записи пользовательского элемента записи, который выполняет проверку перед вставкой. Заранее благодарим.
Ниже приведен код
public JdbcBatchItemWriter<T> myWriter() {
JdbcBatchItemWriter<T> myWriter = new JdbcBatchItemWriter<T>();
myWriter.setItemSqlParameterSourceProvider(new BeanPropertyItemSqlParameterSourceProvider<T>());
myWriter.setSql("INSERT INTO Parent table( colums) values ( values )");
myWriter.setDataSource(dataSource);
myWriter.afterPropertiesSet();
return myWriter;
}
public JdbcBatchItemWriter<T> myOtherWriter() {
JdbcBatchItemWriter<T> myWriter = new JdbcBatchItemWriter<T>(); 1
myWriter.setItemSqlParameterSourceProvider(new BeanPropertyItemSqlParameterSourceProvider<T>());
myWriter.setSql("INSERT INTO child table( colums) values ( values )");
myWriter.setDataSource(dataSource);
myWriter.afterPropertiesSet();
return myWriter;
}
public CompositeItemWriter<T> compositeItemWriter() {
CompositeItemWriter<T> writer = new CompositeItemWriter<T>();
writer.setDelegates(Arrays.asList(myWriter(),myOtherWriter()));
return writer;
}
```