3.17 DAOPessoaMySQL.java

package br.aiec.persistencia.mysql;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;

import br.aiec.negocio.Pessoa;
import br.aiec.persistencia.IDAOPessoa;

/**
 * A referida classe implementa o padrão Data Access Object para um objeto do
 * tipo Pessoa para o banco de dados MySQL.
 * 
 * @author Guilherme Veloso
 * 
 */
public class DAOPessoaMySQL implements IDAOPessoa {

    private Connection getConexao() {
        return new DataSourceMySQL().getConexao();
    }

    /**
   * O método tem por finalidade inserir um objeto na tabela de pessoa do
   * banco de dados
   * 
   * @param Pessoa
   */
    @Override
    public void inserir(Pessoa pessoa) {
        // Obtendo a conexão com SGBD
        Connection conexao = getConexao();

        // Query sql para inserir os dados da pessoa no banco
        String sql = "INSERT INTO tbl_pessoa (nome, dataNascimento) VALUES (?, ?)";

        try {
            // Interface universal da API JDBC
            PreparedStatement pstmt;

            // criando o objeto do tipo PreparedStatement a partir da conexão
            pstmt = conexao.prepareStatement(sql);

            // Alterando o primeiro simbolo de ? da query pelo nome do parâmetro
            // do tipo Pessoa
            pstmt.setString(1, pessoa.getNome());

            // Alterando o segundo simbolo de ? da query pela data de nascimento
            // do parâmetro do tipo Pessoa
            pstmt.setDate(2, new Date(pessoa.getDataNascimento().getTime()));

            // Executando a query no banco
            pstmt.executeUpdate();

            // Finalizando a query
            pstmt.close();

        } catch (SQLException e) {
            throw new RuntimeException(
                    "Falha ao inserir a pessoa na tbl_pessoa", e);
        }
    }

    /**
   * O método tem por finalidade atualizar uma pessoa (registro) presentes no
   * banco de dados
   * 
   * @param Pessoa
   */
    @Override
    public void atualizar(Pessoa pessoa) {

        // Obtendo a conexão com SGBD
        Connection conexao = getConexao();

        // Query sql para consultar todas as pessoas do banco
        String sql = "UPDATE tbl_pessoa SET nome = ?, dataNascimento = ? WHERE id = ?";

        try {
            // Interface universal da API JDBC
            PreparedStatement pstmt;

            // criando o objeto do tipo PreparedStatement a partir da conexão
            pstmt = conexao.prepareStatement(sql);

            // Alterando o primeiro simbolo de ? da query pelo nome do parâmetro
            // do tipo Pessoa
            pstmt.setString(1, pessoa.getNome());

            // Alterando o segundo simbolo de ? da query pela data de nascimento
            // do parâmetro do tipo Pessoa
            pstmt.setDate(2, new Date(pessoa.getDataNascimento().getTime()));

            // Alterando o terceiro simbolo de ? da query pelo id do parâmetro
            // do tipo Pessoa
            pstmt.setInt(3, pessoa.getId());

            // Executando a query no banco
            pstmt.executeUpdate();

            // Finalizando a query
            pstmt.close();

        } catch (SQLException e) {
            throw new RuntimeException("Falha ao atualizar o registro: "
                    + pessoa.getId(), e);
        }

    }

    /**
   * O método tem por finalidade excluir uma pessoa (registro) presentes no
   * banco de dados
   * 
   * @param Pessoa
   */
    @Override
    public void excluir(Pessoa pessoa) {

        // Obtendo a conexão com SGBD
        Connection conexao = getConexao();

        // Query sql para consultar todas as pessoas do banco
        String sql = "DELETE FROM tbl_pessoa WHERE id = ?";

        try {
            // Interface universal da API JDBC
            PreparedStatement pstmt;

            // criando o objeto do tipo PreparedStatement a partir da conexão
            pstmt = conexao.prepareStatement(sql);

            // Alterando o primeiro simbolo de ? da query pelo id do parâmetro
            // do tipo Pessoa
            pstmt.setInt(1, pessoa.getId());

            // Executando a query no banco
            pstmt.executeUpdate();

            // Finalizando a query
            pstmt.close();

        } catch (SQLException e) {
            throw new RuntimeException("Falha ao exluir o registro: "
                    + pessoa.getId(), e);
        }

    }

    /**
   * O método tem por finalidade consultar todas as pessoas (registros)
   * presentes no banco de dados
   * 
   * @return List<Pessoa>
   */
    @Override
    public List<Pessoa> consultarTodasPessoas() {

        // Obtendo a conexão com SGBD
        Connection conexao = getConexao();

        // Query sql para consultar todas as pessoas do banco
        String sql = "SELECT * FROM tbl_pessoa";

        // Lista de retorno que conterá as pessoas registradas no banco
        List<Pessoa> listPessoas = new LinkedList<Pessoa>();

        try {

            // Interface universal da API JDBC
            PreparedStatement pstmt;

            // criando o objeto do tipo PreparedStatement a partir da conexão
            pstmt = conexao.prepareStatement(sql);

            // Executando a query no banco
            ResultSet rs = pstmt.executeQuery();

            // Percorrendo o resultado da query
            while (rs.next()) {

                // Criando um objeto do tipo Pessoa
                Pessoa pessoa = new Pessoa();

                // Lendo o id(chavve primária) da posição atual e gravando no
                // objeto
                // do tipo Pessoa
                pessoa.setId(rs.getInt("id"));

                // Lendo o registro nome da posição atual e gravando no objeto
                // do tipo Pessoa
                pessoa.setNome(rs.getString("nome"));

                // Lendo o registro dataNascimento da posição atual e gravando
                // no objeto do tipo Pessoa
                pessoa.setDataNascimento(rs.getDate("dataNascimento"));

                // Adicionando o objeto do tipo pessoa a lista de resultados
                listPessoas.add(pessoa);
            }

            // Finalizando a query
            pstmt.close();

        } catch (SQLException e) {
            throw new RuntimeException(
                    "Falha ao consultar todas as pessoas na tbl_pessoa", e);
        }

        // retornando a lista com todos os registros presentes no banco.
        return listPessoas;
    }

    @Override
    public Pessoa consultarPessoa(Pessoa parametro) {
        // Obtendo a conexão com SGBD
        Connection conexao = getConexao();

        // Query sql para consultar todas as pessoas do banco
        String sql = "SELECT * FROM tbl_pessoa WHERE id = ?";

        // Lista de retorno que conterá as pessoas registradas no banco
        Pessoa resultado = new Pessoa();

        try {

            // Interface universal da API JDBC
            PreparedStatement pstmt;

            // criando o objeto do tipo PreparedStatement a partir da conexão
            pstmt = conexao.prepareStatement(sql);

            // Alterando o primeiro simbolo de ? da query pelo id do parâmetro
            // do tipo Pessoa
            pstmt.setInt(1, parametro.getId());

            // Executando a query no banco
            ResultSet rs = pstmt.executeQuery();

            // Percorrendo o resultado da query
            while (rs.next()) {

                // Lendo o id(chavve primária) da posição atual e gravando no
                // objeto
                // do tipo Pessoa
                resultado.setId(rs.getInt("id"));

                // Lendo o registro nome da posição atual e gravando no objeto
                // do tipo Pessoa
                resultado.setNome(rs.getString("nome"));

                // Lendo o registro dataNascimento da posição atual e gravando
                // no objeto do tipo Pessoa
                resultado.setDataNascimento(rs.getDate("dataNascimento"));

            }

            // Finalizando a query
            pstmt.close();

        } catch (SQLException e) {
            throw new RuntimeException(
                    "Falha ao consultar todas as pessoas na tbl_pessoa", e);
        }

        // retornando a pessoa pesquisada
        return resultado;
    }

}
Copyright © 2014 AIEC.