Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Dołącz warunek dotyczący tytułu do zapytania.
  • Dodaj AND do zapytania, jeśli warunek tytułu już został dodany, lub WHERE, 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);
    }
}
Edytuj i uruchom kod