Как мне передать значения в подготовленный оператор, где у меня есть 2 значения, которые мне нужно вставить в 6 мест?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как мне передать значения в подготовленный оператор, где у меня есть 2 значения, которые мне нужно вставить в 6 мест?

Сообщение Anonymous »

У меня есть следующая строка SQL:

Код: Выделить всё

    SELECT fm.*,
u.username AS friend_username
FROM friend_messages fm
JOIN users u ON
(u.id = fm.sender_id AND fm.sender_id = :friendId)
OR
(u.id = fm.receiver_id AND fm.receiver_id = :friendId)
WHERE
(fm.sender_id = :userId AND fm.receiver_id = :friendId)
OR
(fm.sender_id = :friendId AND fm.receiver_id = :userId)
ORDER BY fm.created_at ASC
Как видите, мне нужно заменить :userId и :friendId на ? прежде чем я выполню строку SQL с помощью JdbcTemplate. Обычно при этом я делаю что-то вроде этого:

Код: Выделить всё

    String serverQuery = "SELECT sm.id AS message_id, sm.server_id, sm.sender_id, u.username AS sender_username, sm.content, sm.created_at FROM server_messages sm JOIN users u ON sm.sender_id = u.id WHERE sm.server_id = ? ORDER BY sm.created_at ASC";
List collection = this.db.query(serverQuery, new ServerMessageRowMapper(), serverId);
Проблема в том, что строка SQL более сложна, и я не уверен, как мне передать идентификатор пользователя один раз и применить его к двум местам.
У меня есть переменные int friendsId = 2 и int userId = 4. Я пробовал сделать что-то вроде этого:

Код: Выделить всё

    SELECT fm.*,
u.username AS friend_username
FROM friend_messages fm
JOIN users u ON
(u.id = fm.sender_id AND fm.sender_id = ?)
OR
(u.id = fm.receiver_id AND fm.receiver_id = ?)
WHERE
(fm.sender_id = ? AND fm.receiver_id = ?)
OR
(fm.sender_id = ? AND fm.receiver_id = ?)
ORDER BY fm.created_at ASC

List collection = this.db.query(serverQuery, new FriendMessageRowMapper(), friendId, friendId , userId, friendId, friendId, userId);
Но я полагаю, что есть более интуитивный способ добиться этого?

Подробнее здесь: https://stackoverflow.com/questions/793 ... 2-values-t
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»