書籍検索システム
CityBook Libraries の現在の検索機能は、書籍タイトルの完全一致のみに対応しています。そこで、タイトルの一部や著者名、あるいはその組み合わせで検索できる柔軟な検索機能が必要とされています。
ここでは、ユーザーが指定した検索条件に基づいて SQL クエリを動的に構築するクエリビルダーを作成します。HikariSetup クラスはあらかじめ設定済みです。
この演習はコースの一部です
Java で PostgreSQL データベースにクエリを実行する
演習の手順
- タイトル条件をクエリに追加しましょう。
- タイトル条件を追加した場合は
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);
}
}