Sistema di ricerca libri
L'attuale ricerca di CityBook Libraries supporta solo i titoli esatti dei libri. Serve una ricerca più flessibile che permetta ai visitatori di cercare per titolo parziale, nome autore o una combinazione di questi criteri.
Creerai un generatore di query dinamiche che costruisce query SQL in base ai criteri di ricerca forniti dagli utenti. La classe HikariSetup è già configurata per te.
Questo esercizio fa parte del corso
Eseguire query su un database PostgreSQL in Java
Istruzioni dell'esercizio
- Aggiungi la condizione sul titolo alla query.
- Aggiungi AND se hai aggiunto una condizione sul titolo, altrimenti WHERE, alla query.
- Completa la query per ordinare per titolo.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
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);
}
}