Bokssökningssystem
CityBook Libraries nuvarande sökning stöder bara exakta boktitlar. De behöver en flexibel sökfunktion som låter besökare söka på delar av en titel, författarnamn eller en kombination av dessa kriterier.
Du ska skapa en dynamisk frågebyggare som konstruerar SQL-frågor utifrån de sökkriterier som användaren anger. Klassen HikariSetup är redan konfigurerad åt dig.
Den här övningen är en del av kursen
Fråga en PostgreSQL-databas i Java
Övningsinstruktioner
- Lägg till titelvillkoret i frågan.
- Lägg till AND om ett titelvillkor redan finns, annars WHERE, i frågan.
- Komplettera frågan så att resultaten sorteras efter titel.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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);
}
}