ComeçarComece de graça

Sistema de busca de livros

A busca atual da CityBook Libraries só aceita títulos de livros exatos. Eles precisam de um recurso de busca flexível que permita que visitantes pesquisem por parte do título, nome do autor ou qualquer combinação desses critérios.

Você vai criar um construtor de consultas dinâmicas que monta consultas SQL com base nos critérios de busca fornecidos pelos usuários. A classe HikariSetup já está configurada para você.

Este exercício faz parte do curso

Consultando um banco de dados PostgreSQL em Java

Ver curso

Instruções do exercício

  • Acrescente a condição de título à consulta.
  • Adicione AND se você acrescentou uma condição de título ou WHERE se não, à consulta.
  • Complete a consulta para ordenar por título.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

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);
    }
}
Editar e executar o código