sábado, 21 de maio de 2011

Trabalhando com List e banco de dados

Nesse post irei demonstrar como trabalhar com List, mais especificamente ArrayList.
Para começar vou demonstrar como fazer um Select em uma tabela no banco de dados e armazenar em uma ArrayList.

Para começar vamos criar nossa classe para conecção com o banco de dados, estarei utilizando o mysql


public class ConnectionFactory {
 public static Connection getConnection(){
  Connection cnn = null;
   try{
    Class.forName("com.mysql.jdbc.Driver").newInstance();
    cnn = DriverManager.getConnection("jdbc:mysql://localhost/crud", "root", "root");
   } catch (Exception e) {
    e.printStackTrace();
   }
  return cnn;
 }
}



Temos a seguinte tabela no banco de dados, Cliente com os campo Nome e Idade, vamos implementa-la no java.


public class Cliente {
 
   private String nome;
   private Integer idade;

   //Getters e Setters

}

Insira alguns dados no banco de dados

Insert into Cliente values ('Cristiano', 22);

Insert into Cliente values ('Fabio', 15);

Insert into Cliente values ('Joao', 135);

Insert into Cliente values ('Pedro', 11);

Insert into Cliente values ('Maria', 53);


Agora vamos criar nossa classe que ira fazer o select e armazenar na ArrayList


public class ClienteCrud {
 
 public List<cliente> clientes = new ArrayList<cliente>();

 public void listar(){
  ResultSet rs = null;
  Connection cnn = ConnectionFactory.getConnection();
  try {
   PreparedStatement sql = cnn.prepareStatement("select * from cliente");
   rs = sql.executeQuery();
   while(rs.next()){
    Cliente cliente = new Cliente();
    cliente.setNome(rs.getString("nome"));
    cliente.setIdade(rs.getInt("idade"));
    clientes.add(cliente);
   }
  } catch (SQLException e) {
   e.printStackTrace();
  }
 }
}

Vamos entender o que acontece na classe ClienteCrud, é criar uma ArrayList de Cliente, isso significa que só é possível inserir objetos do tipo Cliente nessa lista.
No metodo Listar é criado um ResultSet para armazenar o resultado do select, é feito a connecção com o banco de dados, após isso fazemos o select, executamos a query  guardamos o resultado no ResultSet, agora vamos a parte em que armazenamos o resultado(s) no arrayList.
Fazemos um while(rs.next()) que significa que enquanto existir um próximo resultado ele vai continuar fazendo o loop, agora a parte que nos interessa, é criado um novo objeto Cliente setado o nome e a idade com o resultado do select e adicionado o Objeto Cliente a lista.

Agora vamos finalmente mostrar esse resultado na tela

public class ClienteView {

 public static void main(String[] args) {
  ClienteCrud cc = new ClienteCrud();
  cc.listar();
  System.out.println("--------\nSem Classificação \n--------");
  for (Cliente c : cc.clientes) {
   System.out.println(c.getNome());
   System.out.println(c.getIdade());
  }
 }
}

Iremos obter


--------
Sem Classificação
--------
Nome: Cristiano
Idade: 22
Nome: Fabio
Idade: 15
Nome: Joao
Idade: 135
Nome: Pedro
Idade: 11
Nome: Maria
Idade: 53

No proximo post irei demostrar como fazer a classificação dessa lista com Comparator e Comparable.

3 comentários:

  1. Como armazenar o objeto cliente que teriam os atributos nome e idade em outra tabela?

    ResponderExcluir
  2. Tenho um questionamento. Estou desenvolvendo uma aplicação e tou utilizando o WampServer. Criei as tabelas e tou conseguindo pegar as informações do banco. Caso eu queira vender essa aplicação como devo proceder? tipo eu gero um .jar do meu arquivo e como faço para passar o banco de dados?

    ResponderExcluir