Запрос UPDATE

Запрос SQL UPDATE используется для редактирования существующих записей в таблице БД.

Представим, что мы меняем имя определенного человека в нашей БД actors.

Синтаксис UPDATE в SQL выглядит следующим образом:

executeStatement("UPDATE actors SET name = 'Kaley Cuoco-Sweeting' WHERE name = 'Kaley Cuoco'");

В данном случае мы выделяем определенные записи с помощью оператора WHERE и устанавливаем новое значение 'Kaley Cuoco-Sweeting' в столбце name для всех полученных записей. В операторе WHERE, можно сочетать несколько условий, используя операторы AND и OR.

Эквивалент функции в QueryDSL:

update(actors)
    .where(actors.name.eq(
"Kaley Cuoco"))
    .set(actors.name, "Kaley Cuoco-Sweeting")
    .execute();

Как редактировать несколько значений

Прошлый пример был простым. Сейчас рассмотрим как редактировать несколько значений сразу. 

Предположим мы хотим также отредактировать семейное положение. Решение очевидно, если данные представлены в виде строковой функции String, поэтому сейчас мы рассмотрим возможность отредактировать значение, которое представлено в виде элемента списка вариантов. Предположим, что статус в модели представлен в виде списка вариантов MaritalStatus с элементами (SINGLE, MARRIED).

Запросы должны выглядеть:

update(actors)
    .where(actors.name.eq(
"Kaley Cuoco"))
    .set(actors.name, "Kaley Cuoco-Sweeting")
    .set(actors.status, MARRIED)
    .execute();

executeStatement("UPDATE actors SET name = ?, status = ? WHERE name = ?",
    "Kaley Cuoco-Sweeting", MARRIED, "Kaley Cuoco");