ПочатиПочніть безкоштовно

Система пошуку книжок

Поточний пошук у CityBook Libraries підтримує лише точні назви книжок. Потрібна гнучка функція, яка дає змогу відвідувачам шукати за частиною назви, ім'ям автора або будь-якою комбінацією цих критеріїв.

Ви створите динамічний конструктор запитів, який формуватиме SQL-запити на основі критеріїв пошуку, заданих користувачами. Клас HikariSetup уже налаштовано для вас.

Ця вправа є частиною курсу

Запити до бази даних PostgreSQL у Java

Переглянути курс

Інструкції до вправи

  • Додайте до запиту умову для назви.
  • Додайте AND, якщо ви додали умову для назви, або WHERE — якщо ні, до запиту.
  • Завершіть запит сортуванням за назвою.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

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);
    }
}
Редагувати та запускати код