Kom igångKom igång gratis

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

Visa kurs

Ö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);
    }
}
Redigera och kör kod