System wyszukiwania książek
Obecna wyszukiwarka bibliotek CityBook obsługuje tylko dokładne tytuły książek. Biblioteki potrzebują elastycznej funkcji wyszukiwania, która pozwoli odwiedzającym szukać po fragmencie tytułu, nazwisku autora lub dowolnej kombinacji tych kryteriów.
Utworzysz dynamiczny konstruktor zapytań, który buduje zapytania SQL na podstawie kryteriów wyszukiwania podanych przez użytkowników. Klasa HikariSetup jest już skonfigurowana.
To ćwiczenie jest częścią kursu
Zapytania do bazy danych PostgreSQL w Javie
Instrukcje do ćwiczenia
- Dołącz warunek dotyczący tytułu do zapytania.
- Dodaj
ANDdo zapytania, jeśli warunek tytułu już został dodany, lubWHERE, jeśli nie. - Uzupełnij zapytanie, aby posortować wyniki według tytułu.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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);
}
}