Système de recherche de livres
La recherche actuelle de CityBook Libraries ne prend en charge que les titres exacts. Ils ont besoin d’une recherche plus flexible qui permette aux visiteurs de chercher par titre partiel, nom d’auteur, ou toute combinaison de ces critères.
Vous allez créer un générateur de requêtes dynamique qui construit des requêtes SQL selon les critères saisis par les utilisateurs. La classe HikariSetup est déjà configurée pour vous.
Cet exercice fait partie du cours
Interroger une base de données PostgreSQL en Java
Instructions
- Ajoutez la condition sur le titre à la requête.
- Ajoutez AND si vous avez ajouté une condition sur le titre, ou WHERE sinon, à la requête.
- Complétez la requête pour trier par titre.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
public class Main {
public static void main(String[] args) {
String titleSearch = "first";
String authorSearch = null;
StringBuilder sql = new StringBuilder(
"SELECT b.title, a.first_name AS author " +
"FROM books b " +
"JOIN book_authors ba ON b.book_id = ba.book_id " +
"JOIN authors a ON ba.author_id = a.author_id ");
boolean hasTitleSearch = false;
if (titleSearch != null && !titleSearch.isEmpty()) {
// Append the title condition
sql.____("WHERE b.title ILIKE ? ");
hasTitleSearch = true;
}
if (authorSearch != null && !authorSearch.isEmpty()) {
// Add AND if you added title condition or WHERE if not
sql.append(hasTitleSearch ? "AND " : "____");
sql.append(" a.first_name ILIKE ? ");
}
// Complete the query to sort by title
sql.append("____ ____ b.title");
System.out.println(sql);
}
}