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 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 de recherche fournis par les utilisateurs. La classe HikariSetup est déjà configurée pour vous.
Cette activité fait partie du cours
Interroger une base de données PostgreSQL en Java
Instructions de l’exercice
- Ajoutez la condition sur le titre à la requête.
- Ajoutez AND si vous avez ajouté une condition sur le titre, sinon ajoutez WHERE, à la requête.
- Complétez la requête pour trier par titre.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
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);
}
}