Filtrer et trier les données

Interroger une base de données PostgreSQL en Java

Miller Trujillo

Staff Software Engineer

Pourquoi filtrer et trier ?

  • La plupart des applis n'affichent pas tous les enregistrements
  • Il faut restreindre les résultats
  • Organiser les données de façon utile
  • Afficher des blocs gérables

$$

$$

$$

$$

  • WHERE, ORDER BY, LIMIT, OFFSET

Une librairie en ligne

Interroger une base de données PostgreSQL en Java

Filtrer avec WHERE

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

pstmt.setInt(1, 2000); ResultSet rs = pstmt.executeQuery();
  • Utilisez l'espace réservé ? et liez avec setInt()
  • Le code Java reste identique, seul le SQL change
Interroger une base de données PostgreSQL en Java

Peut-on plutôt filtrer en Java ?

  • Filtrer au niveau de la base de données :
    • Réduit les données transférées ✅
    • Évite la congestion du réseau ✅
    • Offre un meilleur rendement ✅
  • Exception : logique complexe (API externes, modèles d'IA) 💡

Analogie avec la commande de repas

Interroger une base de données PostgreSQL en Java

Trier avec 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();
// Adding dynamic behavior
boolean desc = true;
String sql = "SELECT title, publication_year FROM books
WHERE category_id = ? ORDER BY publication_year ";

sql += desc ? "DESC" : "ASC";
  • += ajoute du texte à la chaîne SQL
  • ?: – opérateur ternaire (if-else compact)
Interroger une base de données PostgreSQL en Java

Pagination avec LIMIT et OFFSET

  • LIMIT contrôle le nombre de lignes retournées
  • OFFSET ignore des lignes avant de retourner les résultats
  • ORDER BY assure des résultats cohérents d'une page à l'autre
String sql = "SELECT title FROM books ORDER BY title ASC LIMIT ? OFFSET ?";
PreparedStatement pstmt = conn.prepareStatement(sql);

pstmt.setInt(1, 10); // LIMIT: 10 livres par page pstmt.setInt(2, 20); // OFFSET: ignorer les 20 premières lignes ResultSet rs = pstmt.executeQuery();
Interroger une base de données PostgreSQL en Java

Passons à la pratique !

Interroger une base de données PostgreSQL en Java

Preparing Video For Download...