Aprenderemos neste tutorial como fazer uma consulta SQL no banco de dados. Aqui em “CRIANDO INSERT NO SISTEMA”, aprendemos a inserir dados na base de dados a partir do nosso sistema.
IMPLEMENTANDO O MÉTODO LISTAR
Agora, portanto, criaremos um método que nos permitirá consultar esta base de dados que construímos. O método que será criado na classe UserPosDAO retornará uma lista de objetos.
public List<Userposjava> listar(){
List<Userposjava> list = new ArrayList<Userposjava>();
}
Este método precisará também do objeto PreparedStatement, que por sua vez recebe o objeto connection invocando o objeto prepareStatement. O objeto Statement executa instruções SQL no banco de dados. Assim, esta instrução receberá a variável sql declarada anteriormente com a instrução select que selecionará e exibirá todos os atributos da tabela.
String sql = "select * from userposjava";
PreparedStatement statement = connection.prepareStatement(sql);
Antes de continuarmos, vale lembrar que estamos neste caso retornando todos os objetos da tabela porque é uma tabela com poucos dados. Não recomendo que dê um select * from em uma tabela com dezenas de milhares de dados.
Os dados que iremos selecionar na tabela serão retornados em uma interface do objeto Java.sql chamada ResultSet. Este ResultSet representa o conjunto de resultados de uma tabela no banco de dados. O ResultSet recebe um statement invocando o método executeQuery(). O método executeQuery() tem como responsabilidade executar uma instrução SQL que retorna um único objeto ResultSet. E por fim retornamos nossa lista.
ResultSet resultado = statement.executeQuery();
Retunr list
Assim, enquanto houver dados na lista, iremos instanciar o objeto para pegar do banco e adicionar a uma lista. Obviamente temos que buscar estes dados antes de adicioná-los a lista. E todo este código estará no escopo do laço de repetição while que por sua vez está dentro do método listar.
ENTENDENDO O MÉTODO LISTAR
Recapitulando, implementamos um método que retornará uma lista de objetos, e então instanciamos esta lista, que ou retornará uma lista de objetos ou retornará vazio. Montamos o SQL e o passamos para o objeto prepareStatement, e executamos a query do banco de dados que retornará o resultado. Dessa forma enquanto for true, ou seja, enquanto ouver objetos na lista ela será percorrida. E enquanto a lista vai sendo percorrida, novos objetos vão sendo montados e novos atributos “setados”, para então serem adicionados à lista. Ao fim do processamento do método a lista será retornada.
IMPLEMENTANDO MÉTODO DE TEST
Na classe TesteBancoJDBC iremos implementar um método de teste, onde iremos chamar e instanciar o objeto DAO. Na sequência iremos invocar o listar, colocando-o em uma lista do mesmo tipo de objeto do banco de dados. É importante ressaltar que depois do objeto instanciado todo a linha de código deverá estar envolvido em um try/catch.
List<Userposjava> list = dao.listar();
E ainda dentro do bloco try implementaremos um foreach para varrer a lista de objetos e imprimir o resultado no console. Antes, porém, na classe Userposjava gere um toString para o id, nome e e-mail. Assim, dentro do foreach precisaremos apenas passar o objeto para o método print.
for (Userposjava userposjava : list) {
System.out.println(userposjava);
}
CONSULTANDO APENAS UM ÚNICO OBJETO
E como fazer para trazer apenas um objeto, neste caso, o código será bem semelhante, exceto que removeremos toda referência a lista. E também substituiremos a variável de objeto “list” por “retorno”. E por fim remova o list.add(userposjava) e também a instância do objeto dentro do while. A assinatura do método que receberá como parâmetro um Long id, ficará da seguinte forma.
public Userposjava buscar(Long id) throws Exception{
Userposjava retorno = new Userposjava();
}
A query responsável por selecionar o objeto, selecionará o objeto cujo id for igual ao id passado por parâmetro.
String sql = "select * from userposjava where id = " + id;
Na classe TesteBancoJdbc implementaremos um novo método para trazer o objeto e exibir no console.
Public void initBuscar(){
UserPosDAO dao = new UserPosDAO();
}
E este método retornará um objeto do tipo Userposjava, onde invocaremos o buscar passando o id objeto que desejamos exibir. O id deve indicar o formato de conversão. Assim, depois dessa instrução imprimiremos o objeto desejado no console com o método print.
Userposjava userposjava = dao.buscar(6L);
System.out.println(userposjava);
EM POUCAS PALAVRAS
Conseguimos então a implementação de um método que traz do banco de dados os objetos. Ou apenas um dado específico, e neste último caso atente-se para a implementação do laço de repetição while.
while(resultado.next()) {
retorno.setId(resultado.getLong("id"));
retorno.setNome(resultado.getString("nome"));
retorno.setEmail(resultado.getString("email"));
}
Eu fico por aqui, nos vemos no próximo tutorial.