Разве JdbcBatchItemWriter не поддерживает элемент ввода как List <Map>?

1

Из интерфейса ItemWriter, который реализован JdbcBatchItemWriter

public interface ItemWriter<T> {
    void write(List<? extends T> items) throws Exception;
}

Он думает, что предназначен для пакетного обновления, но что, если элемент, который я использовал для ввода, уже является списком или списком, мне нужно написать собственный JdbcItemWriter, или встроенный JdbcBatchItemWriter мог бы выполнить эту работу?

  • 0
    Вы ItemPreparedStatementSetter , как написать List<List<String>> используя ItemPreparedStatementSetter или JdbcBatchItemWriter ? Если да, можете ли вы поделиться, как вы это сделали?
Теги:
spring
spring-batch

2 ответа

0
Лучший ответ

Встроенный JdbcBatchItemWriter будет работать. Вы - элемент типа List. В этом нет ничего плохого. Вам просто нужно реализовать соответствующий ItemPreparedStatementSetter или ItemSqlParameterSourceProvider самостоятельно, чтобы сопоставить элементы List со значениями в SQL.

  • 0
    Я вижу точку, мой элемент имеет тип List, метод записи JdbcBatchItemWriter будет принимать List <List> в качестве входных данных. если я использую itemSqlParameterSourceProvider, то реализация itemSqlParameterSourceProvider будет немного хитрой, в соответствии с исходным кодом JdbcBatchItemWriter: [batchArgs [i ++] = itemSqlParameterSourceProvider.createSqlParameterSource (item); ] в этой строке элемент представляет собой тип List, а не Map или Bean.
0

Неа. Использование объекта домена содержит список.

class MyDomainObject {
  List<Item> items = new ArrayList<Item>();
}

и T замещение

public class MyItemWrite implement ItemWrite<MyDomainObject> {
  public void write(List<? extends MyDomainObject> items) throws Exception {
    for(MyDomainObject o : items)
    {
      // Perform o.items write
    }
  }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню