Гарантированный порядок в пакетном обновлении SQL? - PullRequest
0 голосов
/ 08 февраля 2012

Предположим, что список предметов содержит item1, item2 и item3. Вставляет ли БД мои предметы в этот порядок?

List<Item> items = ...
List<Map<String, Object>> batchValues = new ArrayList<Map<String, Object>>();
for (Item item : items) {
    Map<String, Object> namedParameters = ...
    batchValues.add(namedParameters);
}
getNamedParameterJdbcTemplate().batchUpdate(SQL_INSERT_ITEMS, batchValues.toArray(new Map[0]));

Ответы [ 2 ]

2 голосов
/ 08 февраля 2012

Конечно, это так, иначе это будет довольно бесполезно.

И, кстати, вы должны изменить этот код:

batchValues.toArray(new Map[0])

на

batchValues.toArray(new Map[batchValues.size()])
1 голос
/ 09 февраля 2012

Реляционные базы данных не поддерживают порядок вставки. Когда вы запрашиваете записи обратно, вы можете указать порядок, в котором они вам нужны, с помощью предложения order by. Если вам нужно, чтобы записи были упорядочены так, как вы их вставили, вам придется вручную сохранить номер в поле записи. В некоторых базах данных есть опция автоинкремента для столбца таблицы или генератор последовательностей (Oracle), который вы можете использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...