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
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);
}
}