Daten filtern und sortieren

Abfragen einer PostgreSQL-Datenbank in Java

Miller Trujillo

Staff Software Engineer

Warum filtern und sortieren?

  • Die meisten Anwendungen zeigen nicht alle Datensätze
  • Ergebnisse müssen eingegrenzt werden
  • Daten sinnvoll organisieren
  • Handhabbare Abschnitte anzeigen

$$

$$

$$

$$

  • WHERE, ORDER BY, LIMIT, OFFSET

Ein Online-Buchladen

Abfragen einer PostgreSQL-Datenbank in Java

Filtern mit WHERE

String sql = "SELECT * FROM books WHERE publication_year > ?";
PreparedStatement pstmt = conn.prepareStatement(sql);

pstmt.setInt(1, 2000); ResultSet rs = pstmt.executeQuery();
  • Verwende ? als Platzhalter und binde mit setInt()
  • Java-Code bleibt gleich, nur SQL ändert sich
Abfragen einer PostgreSQL-Datenbank in Java

Können wir stattdessen in Java filtern?

  • Filtern auf Datenbankebene:
    • Reduziert übertragene Daten ✅
    • Verhindert Netzwerküberlastung ✅
    • Bessere Leistung ✅
  • Ausnahme: komplexe Logik (externe APIs, KI-Modelle) 💡

Bestellung als Analogie

Abfragen einer PostgreSQL-Datenbank in Java

Sortieren mit ORDER BY

String sql = "SELECT title, publication_year FROM books
WHERE category_id = ? ORDER BY publication_year DESC";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, 3);
ResultSet rs = pstmt.executeQuery();
// Dynamisches Verhalten hinzufügen
boolean desc = true;
String sql = "SELECT title, publication_year FROM books
WHERE category_id = ? ORDER BY publication_year ";

sql += desc ? "DESC" : "ASC";
  • += fügt Text zur SQL-Zeichenkette hinzu
  • ?: - ternärer Operator (kompaktes if-else)
Abfragen einer PostgreSQL-Datenbank in Java

Paginierung mit LIMIT und OFFSET

  • LIMIT bestimmt die Anzahl der zurückgegebenen Zeilen
  • OFFSET überspringt Zeilen vor der Rückgabe
  • ORDER BY sorgt für konsistente Ergebnisse über Seiten hinweg
String sql = "SELECT title FROM books ORDER BY title ASC LIMIT ? OFFSET ?";
PreparedStatement pstmt = conn.prepareStatement(sql);

pstmt.setInt(1, 10); // LIMIT: 10 Bücher pro Seite pstmt.setInt(2, 20); // OFFSET: erste 20 Zeilen überspringen ResultSet rs = pstmt.executeQuery();
Abfragen einer PostgreSQL-Datenbank in Java

Lass uns üben!

Abfragen einer PostgreSQL-Datenbank in Java

Preparing Video For Download...