Kitap arama sistemi
CityBook Libraries'in mevcut araması yalnızca kitap adlarının birebir eşleşmesini destekliyor. Ziyaretçilerin kısmi başlık, yazar adı veya bu ölçütlerin herhangi bir kombinasyonuyla arama yapabilmesini sağlayan esnek bir arama özelliğine ihtiyaçları var.
Kullanıcıların sağladığı arama ölçütlerine göre SQL sorguları oluşturan dinamik bir sorgu oluşturucu yazacaksın. HikariSetup sınıfı senin için zaten yapılandırıldı.
Bu egzersiz, kursun bir parçasıdır
Java ile PostgreSQL Veritabanına Sorgu Yazma
Egzersiz talimatları
- Başlık koşulunu sorguya ekle.
- Sorguya, başlık koşulu eklediysen AND, eklemediysen WHERE ekle.
- Sorguyu başlığa göre sıralayacak şekilde tamamla.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
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);
}
}