Skip to content

Commit 1f053c8

Browse files
committed
Refatoração da classe AppBd
1 parent 166719a commit 1f053c8

File tree

7 files changed

+282
-137
lines changed

7 files changed

+282
-137
lines changed

src/main/java/com/example/AppBd.java

Lines changed: 34 additions & 137 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package com.example;
22

3-
import java.sql.Connection;
4-
import java.sql.DriverManager;
53
import java.sql.SQLException;
6-
//import java.sql.Statement;
7-
84
import com.example.dao.ConnectionManager;
5+
import com.example.dao.DAO;
6+
import com.example.dao.EstadoDAO;
7+
import com.example.dao.ProdutoDAO;
8+
import com.example.model.Estado;
99
import com.example.model.Marca;
1010
import com.example.model.Produto;
1111

@@ -17,151 +17,48 @@ public static void main(String[] args) {
1717

1818
public AppBd() {
1919

20-
//carregarDriverJDBC(); // Esse código não é mais necessário, pois atualmente o driver é carregado de forma automática (caso ele seja encontrado)
20+
//carregarDriverJDBC(); // Esse código não é mais necessário, pois atualmente o driver é carregado de forma automática (caso ele seja encontrado)
2121

22-
try(var conn = ConnectionManager.getConnection()){
22+
try(var conn = ConnectionManager.getConnection()){
2323

24+
25+
var estadoDAO = new EstadoDAO(conn);
26+
var produtoDAO = new ProdutoDAO(conn);
27+
var dao = new DAO(conn);
28+
var produto = new Produto();
2429
var marca = new Marca();
30+
2531
marca.setId(1L); //adiciona o "L" ao lado do número pq ele não é um tipo primitivo long é e sim um Long(classe wrapper/objeto)
26-
27-
var produto = new Produto();
32+
2833
produto.setMarca(marca);
2934
produto.setNome("Produto teste A");
3035
produto.setValor(180);
31-
produto.setId(198L);//adiciona o "L" - long
32-
33-
listarDadosTabela(conn, "produto");
34-
//localizarEstado(conn, "PR");
35-
//inserirProduto(conn, produto);
36-
//listarDadosTabela(conn, "produto");
37-
//System.err.println();
38-
//excluirProduto(conn, 201L);
39-
//System.err.println();
40-
alterarProduto(conn, produto, produto.getId());
41-
System.err.println("--------------------");
42-
listarDadosTabela(conn, "produto");
43-
36+
produto.setId(198L);//adiciona o "L" - long
4437

45-
} catch (SQLException e) {
46-
System.err.println("Não foi possível conectar ao banco de dados: " + e.getMessage());
47-
}
48-
}
49-
50-
private void excluirProduto(Connection conn, long id) {
51-
var sql = "delete from produto where id = ?";
52-
System.out.println();
53-
54-
try (var statement = conn.prepareStatement(sql)) {
55-
statement.setLong(1, id);
56-
57-
//executeUpdate() - retorna quantas linhas foram afetadas no bd
58-
if(statement.executeUpdate() == 1) {
59-
System.out.printf("Produto %d excluído com sucesso!", id);
60-
System.out.println();
61-
} else {
62-
System.out.printf("O produto %d nao foi excluído!", id);
63-
System.out.println();
64-
}
65-
} catch (SQLException e) {
66-
System.out.println("Erro ao exluir o produto: " + e.getMessage());
67-
}
68-
69-
}
70-
71-
private void inserirProduto(Connection conn, Produto produto) {
72-
var sql = "insert into produto (nome, marca_id, valor) values (?, ?, ?)";
73-
System.out.println();
74-
75-
try (var statement = conn.prepareStatement(sql)){
76-
77-
statement.setString(1, produto.getNome());
78-
statement.setLong(2, produto.getMarca().getId());
79-
statement.setDouble(3, produto.getValor());
80-
statement.executeUpdate();
81-
82-
} catch (SQLException e) {
83-
System.out.println("Erro na execução da consulta: " + e.getMessage());
84-
}
85-
}
86-
87-
private void alterarProduto(Connection conn, Produto produto, long id) {
88-
var sql = "update produto set nome = ?, marca_id = ?, valor = ? where id = ?";
89-
System.out.println();
90-
91-
try (var statement = conn.prepareStatement(sql)){
92-
93-
statement.setString(1, produto.getNome());
94-
statement.setLong(2, produto.getMarca().getId());
95-
statement.setDouble(3, produto.getValor());
96-
statement.setLong(4, produto.getId());
97-
statement.executeUpdate();
98-
99-
} catch (SQLException e) {
100-
System.out.println("Erro na alteração do produto: " + e.getMessage());
101-
}
102-
}
103-
104-
private void listarDadosTabela(Connection conn, String tabela) {
105-
var sql = "select * from " + tabela;
106-
System.out.println(sql);
107-
try {
108-
var statement = conn.createStatement();
109-
var result = statement.executeQuery(sql);
110-
111-
var metadata = result.getMetaData(); /*para trazer o cabeçalho da tabela*/
112-
int cols = metadata.getColumnCount();/*para trazer o cabeçalho da tabela*/
113-
114-
for (int i = 1; i <= cols; i++) {
115-
System.out.printf("%-25s | ", metadata.getColumnName(i));
116-
}
117-
System.out.println();
118-
119-
while(result.next()) {
120-
for (int i = 1; i <= cols; i++) {
121-
System.out.printf("%-25s | ", result.getString(i));
122-
}
123-
System.out.println();
124-
}
125-
126-
} catch (SQLException e) {
127-
System.out.println("Erro na execução da consulta: " + e.getMessage());
128-
}
129-
}
130-
131-
private void localizarEstado(Connection conn, String uf) {
132-
try {
133-
//var sql = "select * from estado where uf = '" + uf + "'"; //sucetível a SQL Injection (PERIGOSO)
134-
var sql = "select * from estado where uf = ?";
135-
var statement = conn.prepareStatement(sql);
136-
System.out.println();
137-
System.out.println(sql);
138-
statement.setString(1, uf);
139-
var result = statement.executeQuery();
140-
if(result.next()) {
141-
System.out.printf("Id: %d Nome: %s UF: %s%n", result.getInt("id"), result.getString("nome"), result.getString("uf"));
38+
var listaEstados = estadoDAO.listar();
39+
40+
// pode ser "var" ou "Estado"
41+
for(var e : listaEstados) {
42+
System.out.println(e);
43+
//System.out.printf("Id: %d | Nome: %s | UF: %s | Região: %s | Área(km): %d | População: %d", e.getId(), e.getNome(), e.getUf(), e.getRegiao(), e.getAreaKm(), e.getPopulacao());
14244
}
45+
46+
/*estadoDAO.localizar("RN");
47+
48+
dao.listarDadosTabela("produto");
49+
50+
produtoDAO.inserir(produto);
51+
produtoDAO.excluir(201L);
52+
produtoDAO.alterar(produto, produto.getId());
53+
54+
dao.listarDadosTabela("produto");
55+
*/
56+
14357
} catch (SQLException e) {
144-
System.err.println("Erro ao executar consulta SQL: " + e.getMessage());
145-
}
146-
}
147-
148-
private void listarEstados(Connection conn) {
149-
try{
150-
System.out.println("Conexão com banco de dados realizada com sucesso!");
151-
152-
var statement = conn.createStatement();
153-
var result = statement.executeQuery("select * from estado");
154-
155-
while(result.next()){
156-
System.out.printf("Id: %d Nome: %s UF: %s%n", result.getInt("id"), result.getString("nome"), result.getString("uf"));
157-
}
158-
} catch (SQLException e) {
159-
System.err.println("Não foi possível executar a consulta ao banco: " + e.getMessage());
58+
System.err.println("Não foi possível conectar ao banco de dados: " + e.getMessage());
16059
}
16160
}
162-
163-
164-
61+
16562
/* // Com os framewors modernos, como spring, essa configuração não é mais realizada
16663
private void carregarDriverJDBC() {
16764
try{

src/main/java/com/example/dao/ConnectionManager.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,6 @@ public class ConnectionManager {
1717
public static Connection getConnection() throws SQLException {
1818
return DriverManager.getConnection(JDBC_URL, USERNAME, PASSWORD);
1919
}
20+
21+
2022
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package com.example.dao;
2+
3+
import java.sql.Connection;
4+
import java.sql.SQLException;
5+
6+
7+
public class DAO {
8+
protected Connection conn;
9+
10+
public DAO(Connection conn) {
11+
this.conn = conn;
12+
}
13+
14+
public void listarDadosTabela(String tabela) {
15+
var sql = "select * from " + tabela;
16+
System.out.println(sql);
17+
try {
18+
var statement = conn.createStatement();
19+
var result = statement.executeQuery(sql);
20+
21+
var metadata = result.getMetaData(); /*para trazer o cabeçalho da tabela*/
22+
int cols = metadata.getColumnCount();/*para trazer o cabeçalho da tabela*/
23+
24+
for (int i = 1; i <= cols; i++) {
25+
System.out.printf("%-25s | ", metadata.getColumnName(i));
26+
}
27+
System.out.println();
28+
29+
while(result.next()) {
30+
for (int i = 1; i <= cols; i++) {
31+
System.out.printf("%-25s | ", result.getString(i));
32+
}
33+
System.out.println();
34+
}
35+
36+
} catch (SQLException e) {
37+
System.out.println("Erro na execução da consulta: " + e.getMessage());
38+
}
39+
}
40+
41+
42+
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package com.example.dao;
2+
3+
import java.sql.Connection;
4+
import java.sql.SQLException;
5+
import java.util.LinkedList;
6+
import java.util.List;
7+
8+
import com.example.model.Estado;
9+
10+
public class EstadoDAO extends DAO {
11+
//private Connection conn; // fazendo a extenção da classe DAO, não precisamos mais dessa variável aqui q se repetia tbm em EstadoDAO
12+
13+
public EstadoDAO(Connection conn) {
14+
super(conn);
15+
}
16+
17+
18+
public void localizar(String uf) {
19+
try {
20+
//var sql = "select * from estado where uf = '" + uf + "'"; //sucetível a SQL Injection (PERIGOSO)
21+
var sql = "select * from estado where uf = ?";
22+
var statement = conn.prepareStatement(sql);
23+
System.out.println();
24+
System.out.println(sql);
25+
statement.setString(1, uf);
26+
var result = statement.executeQuery();
27+
if(result.next()) {
28+
System.out.printf("Id: %d Nome: %s UF: %s%n", result.getInt("id"), result.getString("nome"), result.getString("uf"));
29+
}
30+
} catch (SQLException e) {
31+
System.err.println("Erro ao executar consulta SQL: " + e.getMessage());
32+
}
33+
}
34+
35+
public List<Estado> listar() throws SQLException {
36+
37+
var lista = new LinkedList<Estado>(); //Cria lista para adicionar os registros/linhas de estado
38+
var statement = conn.createStatement(); //Cria uma declaração SQL para ser enviada
39+
var result = statement.executeQuery("select * from estado"); //Executa a declaração e salva o retorno em result
40+
41+
//faz um for nas linhas, verificando se tem uma próxima linha e vai adicionando cada valor nos campos indicados e ao final vai adicionando na lista para poder ser visualizada a tabela completa
42+
while(result.next()){
43+
var estado = new Estado();
44+
estado.setId(result.getLong("id"));
45+
estado.setNome(result.getString("nome"));
46+
estado.setUf(result.getString("uf"));
47+
lista.add(estado); //adiciona cada linha na lista criada mais acima
48+
49+
}
50+
51+
return lista;
52+
}
53+
54+
}
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
package com.example.dao;
2+
3+
import java.sql.Connection;
4+
import java.sql.SQLException;
5+
6+
import com.example.model.Produto;
7+
8+
public class ProdutoDAO extends DAO{
9+
//private Connection conn; // fazendo a extenção da classe DAO, não precisamos mais dessa variável aqui q se repetia tbm em EstadoDAO
10+
11+
public ProdutoDAO(Connection conn) {
12+
super(conn); //com a extenção da classe DAO, não é preciso repetir a atribuição da variável conn aqui, basta chamar o super(coonn);
13+
}
14+
15+
public void excluir(long id) {
16+
var sql = "delete from produto where id = ?";
17+
System.out.println();
18+
19+
try (var statement = conn.prepareStatement(sql)) {
20+
statement.setLong(1, id);
21+
22+
//executeUpdate() - retorna quantas linhas foram afetadas no bd
23+
if(statement.executeUpdate() == 1) {
24+
System.out.printf("Produto %d excluído com sucesso!", id);
25+
System.out.println();
26+
} else {
27+
System.out.printf("O produto %d nao foi excluído!", id);
28+
System.out.println();
29+
}
30+
} catch (SQLException e) {
31+
System.out.println("Erro ao exluir o produto: " + e.getMessage());
32+
}
33+
34+
}
35+
36+
public void inserir(Produto produto) {
37+
var sql = "insert into produto (nome, marca_id, valor) values (?, ?, ?)";
38+
System.out.println();
39+
40+
try (var statement = conn.prepareStatement(sql)){
41+
42+
statement.setString(1, produto.getNome());
43+
statement.setLong(2, produto.getMarca().getId());
44+
statement.setDouble(3, produto.getValor());
45+
statement.executeUpdate();
46+
47+
} catch (SQLException e) {
48+
System.out.println("Erro na execução da consulta: " + e.getMessage());
49+
}
50+
}
51+
52+
public void alterar(Produto produto, long id) {
53+
var sql = "update produto set nome = ?, marca_id = ?, valor = ? where id = ?";
54+
System.out.println();
55+
56+
try (var statement = conn.prepareStatement(sql)){
57+
58+
statement.setString(1, produto.getNome());
59+
statement.setLong(2, produto.getMarca().getId());
60+
statement.setDouble(3, produto.getValor());
61+
statement.setLong(4, produto.getId());
62+
statement.executeUpdate();
63+
64+
} catch (SQLException e) {
65+
System.out.println("Erro na alteração do produto: " + e.getMessage());
66+
}
67+
}
68+
69+
}

0 commit comments

Comments
 (0)