2012-02-08 2 views
0

Предположим, что список элементов содержит элементы1, пункт2 и пункт3. Вставляет ли БД мои предметы в этом порядке?Гарантированный заказ в пакетном обновлении SQL?

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])); 

ответ

0

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

2

Конечно, это так, иначе это было бы совершенно бесполезно.

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

batchValues.toArray(new Map[0]) 

в

batchValues.toArray(new Map[batchValues.size()]) 
+0

Мой вопрос может быть более связан с фактической вставкой в ​​БД, а затем с пружиной. Будут ли мои предметы вставлены в том же порядке, что и мой список предметов? ... и нет, я мало что знаю о БД. – aandeers