Übergeben Sie Werte an eine vorbereitete Anweisung, in der zwei Werte an sechs Stellen eingefügt werden müssenJava

Java-Forum
Guest
 Übergeben Sie Werte an eine vorbereitete Anweisung, in der zwei Werte an sechs Stellen eingefügt werden müssen

Post by Guest »

Ich habe die folgende SQL-Zeichenfolge:

Code: Select all

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
Wie Sie sehen, muss ich :userId und :friendId durch ? ersetzen, bevor ich die SQL-Zeichenfolge mit JdbcTemplate. Wenn ich das mache, mache ich normalerweise so etwas:

Code: Select all

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);
Das Problem hierbei ist, dass die SQL-Zeichenfolge komplizierter ist und ich nicht sicher bin, wie ich die Benutzer-ID einmal übergeben und an zwei Stellen anwenden soll.
Ich habe die Variablen int friendsId = 2 und int userId = 4. Ich habe versucht, so etwas zu tun:

Code: Select all

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

Code: Select all

List collection = this.db.query(serverQuery, new FriendMessageRowMapper(), friendId, friendId , userId, friendId, friendId, userId);
Gibt es eine intuitivere Möglichkeit, dies zu erreichen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post