เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

ระบบค้นหาหนังสือ

ระบบค้นหาของ CityBook Libraries ในปัจจุบันรองรับเฉพาะการค้นหาด้วยชื่อหนังสือที่ตรงกันทั้งหมดเท่านั้น ทางห้องสมุดจึงต้องการฟีเจอร์ค้นหาที่ยืดหยุ่นมากขึ้น ซึ่งช่วยให้ผู้เข้าใช้บริการสามารถค้นหาด้วยชื่อหนังสือบางส่วน ชื่อผู้แต่ง หรือใช้เงื่อนไขร่วมกันได้

ในแบบฝึกหัดนี้ คุณจะสร้าง dynamic query builder ที่สร้างคิวรี SQL ตามเงื่อนไขการค้นหาที่ผู้ใช้ระบุ โดย class 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);
    }
}
แก้ไขและรันโค้ด