Apostila Java Básico JDBC Aula 11 Criar um projeto -> Aula11. Criar no pacote entity a classe Funcionario com os atributos(idFuncionario, nome, sexo, ativo, salario). Criar construtor vazio, o construtor cheio, o toString com todos os atributos e os getters e setters. package entity; public class Funcionario { private private private private private Integer String String Boolean Double idFuncionario; nome; sexo; ativo; salario; public Funcionario() { } public Funcionario(Integer idFuncionario, String nome, String sexo, Boolean ativo, Double salario) { super(); this.idFuncionario = idFuncionario; this.nome = nome; this.sexo = sexo; this.ativo = ativo; this.salario = salario; } @Override public String toString() { return "Funcionario [idFuncionario=" + idFuncionario + ", nome=" + nome + ", sexo=" + sexo + ", ativo=" + ativo + ", salario=" + salario + "]"; } public Integer getIdFuncionario() { return idFuncionario; } public void setIdFuncionario(Integer idFuncionario) { this.idFuncionario = idFuncionario; } public String getNome() { return nome; } public void setNome(String nome) { www.cotiinformatica.com.br 1 Apostila Java Básico JDBC Aula 11 this.nome = nome; } public String getSexo() { return sexo; } public void setSexo(String sexo) { this.sexo = sexo; } public Boolean getAtivo() { return ativo; } public void setAtivo(Boolean ativo) { this.ativo = ativo; } public Double getSalario() { return salario; } public void setSalario(Double salario) { this.salario = salario; } } Para adicionar a biblioteca de conexão com o banco de “dadosmysqlconnector-java”, clicar com o botão direito no projeto, depois em Properties. www.cotiinformatica.com.br 2 Apostila Java Básico JDBC Aula 11 Clicar em Java Build Path e Add External JARs. Indicar o caminho onde se encontra a biblioteca do mysql. www.cotiinformatica.com.br 3 Apostila Java Básico JDBC Aula 11 Depois de adicionar a lib, clicar em Apply e depois OK. Indicando a lib no projeto. www.cotiinformatica.com.br 4 Apostila Java Básico JDBC Aula 11 Criando o banco de dados: Para criar o script do banco de dados, criar um pacote chamado persistence. Depois clicar no pacote, new e Other. Depois SQL Development, SQL File e Next. Em File name, colocar o nome do script e clicar em Next. Depois de criado o arquivo com o SQL do banco. Digitar os comando para criação do banco. Comandos: drop database if exists aula11; create database aula11; use aula11; Explicação: Apagar o banco se já existir com o nome de aula11. Criar um banco com o nome de aula11. Usar o banco aula11. drop database if exists aula11; create database aula11; use aula2; Comandos: create table primary key varchar not null enum double int Explicação: Criar a tabela com nome de funcionário. Significa que o campo será a chave primária. Siginifica que o campo é uma palavra com 35 caracteres. O campo não poderá ser nulo, vazio. Significa que o campo só tem duas opções “m” ou “f”. Significa que o campo é do tipo Double, valor. Significa que o campo é do tipo inteiro. create table funcionario(idFuncionario int primary key, nome varchar (35) not null, sexo enum ('m','f') not null, salario double, ativo int); Comandos: Explicação: www.cotiinformatica.com.br 5 Apostila Java Básico JDBC desc insert into “nome da tabela” values select * from “nome da tabela” select * from “tabela” Aula 11 Comando para dar a descrição da tabela. Insere na tabela “funcionário” os valores (...) Comando que seleciona todos os campos da tabela funcionário. Seleciona Todos Se refere a tabela desejada. desc funcionario; insert into funcionario values (100,'jose','m',1000,0); insert into funcionario values (101,'stuart','m',1800,1); insert into funcionario values (102,'carla','f',7800,1); select * from funcionario; No banco... www.cotiinformatica.com.br 6 Apostila Java Básico JDBC Aula 11 Criar um pacote chamado persistence e nele criar uma classe chamada Dao. Essa classe é destinada para conexão ao banco de dados. DAO significa Data Access Object. package persistence; import import import import import java.sql.CallableStatement; java.sql.Connection; java.sql.DriverManager; java.sql.PreparedStatement; java.sql.ResultSet; public class Dao { Connection con; PreparedStatement stmt; ResultSet rs; CallableStatement call; public void open() throws Exception{ Class.forName("com.mysql.jdbc.Driver"); con = DriverManager. www.cotiinformatica.com.br 7 Apostila Java Básico JDBC Aula 11 getConnection("jdbc:mysql://localhost:3306/aula11","root","coti" ); } public void close() throws Exception{ con.close(); } Criar o método main para testar se a classe está se conectando ao banco. Dentro do bloco try e catch chamar a classe e criar o seu objeto e dar espaço de memória. Através do objeto abrir e depois fechar. Imprimir a mensagem se conseguiu conectar. Se não conseguir, vai para o catch e imprime a mesnagemd de erro. public static void main(String[] args) { try { Dao d = new Dao(); d.open(); d.close(); System.out.println("Banco de Dados OK!"); } catch (Exception e) { System.out.println("ERROR: " + e.getMessage()); } } } No console... Banco de Dados OK! Criar a classe FuncionarioDao para manipular o funcionário dentro do banco. package persistence; import java.util.ArrayList; import java.util.List; import entity.Funcionario; www.cotiinformatica.com.br 8 Apostila Java Básico JDBC Aula 11 public class FuncionarioDao extends Dao { Criamos o método de criação do funcionário, passamos a classe Funcionario e objeto como parâmetros. Chamamos o método para abrir o banco. Chamamos a conexão com a tabela, depois a conexão com o banco através do método de acesso a tabela passando os parâmetros SQL de inserção dos dados do funcionário, onde as interrogações serão os dados a serem passados. public void create(Funcionario f)throws Exception{ open(); stmt = con. prepareStatement("insert into funcionario values (?,?,?,?,?)"); Em seguida passamos a conexão com a tabela e setamos o tipo do dados que será recebido, nos parâmetros indicamos a posição da coluna e o objeto de funcionário com o método get referente ao campo que será inserido. Assim será feito para todos os dados. stmt.setInt(1,f.getIdFuncionario()); stmt.setString(2,f.getNome()); stmt.setString(3,f.getSexo()); stmt.setDouble(4,f.getSalario()); No parâmetro referente se o funcionário está ativo, colocamos que ele receberá 1 ou 0, será ativo ou não. Fazemos a conexão com a tabela novamente, através do método execute, executamos as ações de cima. Ainda usando a conexão, fechamos a tabela e por fim, fechamos o banco. stmt.setInt(5, (f.getAtivo())?1:0); stmt.execute(); stmt.close(); close(); } www.cotiinformatica.com.br 9 Apostila Java Básico JDBC Aula 11 Criamos o método para buscar todos os funcionários cadastrados de uma vez através de uma lista. Abrimos o banco. Conectamos com a tabela e passamos o parâmetro de busca SQL de todos os registros do banco. Através do rs fazemos a consulta no banco, conectamos com a tabela e executamos a pesquisa. public List<Funcionario> findAll() throws Exception{ open(); stmt = con.prepareStatement("select * from funcionario"); rs = stmt.executeQuery(); Criamos a lista de funcionário través da interface List, criamos o objeto lista e damos espaço de memória para trabalhar. Em seguida, enquanto houver registros preenchemos com os dados do funcionário. Para isso, chamamos a classe e criamos um objeto e damos espaço de memória. List<Funcionario> lista = new ArrayList<Funcionario>(); while(rs.next()){ Funcionario f = new Funcionario(); Depois, pelo objeto de funcionário setamos o campo e através da consulta, pelo rs, indicamos o tipo de campo da referencia, seja passando a posição da coluna onde está o dado esperado ou passando o nome da coluna. Passamos campo a campo os dados a serem trazidos do banco. No fim, após passar todos os campos, chamamos o objeto lista e o método para adicionar, tendo como parâmetro o objeto de funcionário. Fechamos o banco e retornamos a lista já preenchida com as informações. f.setIdFuncionario( rs.getInt(1)); f.setNome( rs.getString(2)); f.setSexo( rs.getString("sexo")); f.setSalario(rs.getDouble(4)); f.setAtivo(( rs.getInt(5) ==1 )?true:false); lista.add(f); } close(); return lista; www.cotiinformatica.com.br 10 Apostila Java Básico JDBC Aula 11 } No método de teste main, abrimos o bloco try e catch e detro do try chamamos a inteface da lista com a classe Funcionário como parâmetro e criamos um objeto chamado resp. Chamamos a classe FuncionarioDao e o método de busca findAll. No loop do for, passamos a classe Funcionario e o objeto f para preencher o objeto resp. Ou seja, vai fazer a busca no banco e enquanto houver registros, em seguida imprime o objeto cheio com os resultados. Imprime também a mensagem. Se cair no catch, der erro, imprime a mensagem de erro e com o método printSackTrace exibe o erro mais detalhadamente. public static void main(String[] args) { try { List <Funcionario> resp = new FuncionarioDao().findAll(); for (Funcionario f : resp){ System.out.println(f); } System.out.println("Funcionario listado com sucesso!"); } catch (Exception e) { System.out.println("ERROR: " + e.getMessage()); e.printStackTrace(); } } } No console.. Funcionario [idFuncionario=100, nome=jose, sexo=m, ativo=false, salario=1000.0] Funcionario [idFuncionario=101, nome=stuart, sexo=m, ativo=true, salario=1800.0] Funcionario [idFuncionario=102, nome=carla, sexo=f, ativo=true, salario=7800.0] Funcionario listado com sucesso! www.cotiinformatica.com.br 11 Apostila Java Básico JDBC Aula 11 No banco... www.cotiinformatica.com.br 12