Boekzoeksysteem
De huidige zoekfunctie van CityBook Libraries ondersteunt alleen exacte boektitels. Ze hebben een flexibele zoekfunctie nodig waarmee bezoekers kunnen zoeken op een deel van de titel, de naam van de auteur, of een combinatie van deze criteria.
Je bouwt een dynamische query builder die SQL-query's opstelt op basis van de zoekcriteria die gebruikers opgeven. De klasse HikariSetup is al voor je geconfigureerd.
Deze oefening maakt deel uit van de cursus
Query's uitvoeren op een PostgreSQL-database in Java
Oefeninstructies
- Voeg de titelvoorwaarde toe aan de query.
- Voeg AND toe als je een titelvoorwaarde hebt toegevoegd, of WHERE als dat niet zo is, aan de query.
- Maak de query af om op titel te sorteren.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
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);
}
}