BatchUpdate JDBCTemplate - пакетное выполнение sql-запросов Java

261
12 июля 2017, 23:43

Есть метод, который обновляет данные в БД по HashMap

public void setHashMapFieldsDB(HashMap<Integer, String> hashMap){
    String SQL = "UPDATE oc_product_description SET name = ? WHERE language_id = 3 AND product_id = ?";
    for (Map.Entry entry : hashMap.entrySet()) {
        jdbcTemplateObject.update(SQL, entry.getValue(), entry.getKey());
    }
}

Подскажите, как его переделать, чтоб sql-запросы выполнялись в пакете? С помощью BatchUpdate или другим способом.

Answer 1

Вот такой вариант

public void setHashMapFieldsDB(HashMap<Integer, String> hashMap){
    String SQL = "UPDATE oc_product_description SET name = ? WHERE language_id = 3 AND product_id = ?";
    List<Map.Entry<Integer, String>> data = new ArrayList<>(hashMap.entrySet());
    jdbcTemplateObject.batchUpdate(SQL, new BatchPreparedStatementSetter() {
        @Override
        public void setValues(PreparedStatement preparedStatement, int i) throws SQLException {
            preparedStatement.setString(1, data.get(i).getValue());
            preparedStatement.setInt(2, data.get(i).getKey());
        }
        @Override
        public int getBatchSize() {
            return data.size();
        }
    });
}
READ ALSO
Оптимальный движок для 2d игры под android

Оптимальный движок для 2d игры под android

Читал форумы везде предлагают использовать Юнити, существует ли альтернатива для разработки 2d игры под андроид на java или C#? Юнити безусловно...

294
Как сделать &ldquo;preview&rdquo; камеры в imagebox?

Как сделать “preview” камеры в imagebox?

Скажите пожалуйста как правильно сделать, чтобы изображение с камеры было в imagebox?

168
Расположение элементов в Layout из java Android

Расположение элементов в Layout из java Android

Нужно, чтобы добавить элементы один под другой из java кода, не используя xml - разметкуЕсть код:

364