Você está na página 1de 6

Como criar um CRUD em java?

Primeiro Passo, instalando as dependencias do sistema. (JDK,JVM,IDE)

Segundo Passo, instalando o MySql Workbench e baixando o conector do mesmo no site


do mysql.

Após fazer esses passos, podemos criar o projeto no Eclipse, ou no Intellij.

Nisso, criando o projeto, precisamos adicionar o conector do mysql no eclipse,


conforme os passos

** Eclipse **
clique com o botão direito do mouse no projeto, vá em properties, depois em
JavaBuild Path, depois clique em libraries,

clique em cima do class path e clique add external jars, selecione o arquivo
conector no seu pc, e depois clique em aplly and close

Feito isso, o conector já estara funcionando no java. Podendo então criar uma
conexão com o banco de dados.

Logo após isso vamos para o eclipse, crie um src, um novo pacote, com o nome de
entities, dentro de entities

criaremos uma nova classe com o nome de Product, ou Produto, dentro de Produto
iremos criar os atributos, contrutores

e métodos acessores para podermos utiliza-lós em outros pacotes, lembrando que por
ser uma linguagem fortemente tipada e orientada a

objetos, precisamos utilizar o encapsulamento, para deixarmos nosso sistema mais


seguro.

iremos utilizar os atributos como private e os mesmos serão estes: id, nome, preco,
quantidade e descricao

Depois, iremos gerar os contrutores e os metodos acessores(getters and setters).


Pelo Eclipse podemos clicar com o botão direto do mouse

na parte de edição da classe e clicar em source e depois ele mostrara todas as


janelas que o eclipse cria automaticamente,

como contructor, generate getters and setters e por ai, no momento utilizaremos os
get e set, e o contrutor vazio e com atributos.

Após iremos criar outro pacote, com o nome de model, e 2 classes, ConnectionModule
e ProductModel(dentro dela iremos criar os metodos que realizaram o CRUD no banco
de dados)

Dentro da classe de ConnectionModule iremos criar o seguinte método

public static Connection conect() {


Connection con;
String driver = "com.mysql.cj.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/nome do seu banco";
String user = "root(usuario padrão do mysql)";
String password = "senha do seu banco";
try {
Class.forName(driver);
con = DriverManager.getConnection(url, user, password);
return con;
} catch (ClassNotFoundException | SQLException e) {
System.out.println(e);
return null;
}
}

este é o método responsável por criar a conexão com o banco de dados da aplicação.

Após isso vamos para a classe ProductModel.

Em ProductModel iremos criar nosso primeiro método. conforme abaixo.

public List<Product> findAll(){


try {
List<Product> listaProdutos = new ArrayList<>();
PreparedStatement ps =
ConnectionModule.conect().prepareStatement(
"select * from product");
ResultSet rs = ps.executeQuery();
while(rs.next()) {
Product p = new Product();
p.setDescricao(rs.getString("descrição"));
p.setId(rs.getInt("id"));
p.setNome(rs.getString("nome"));
p.setPreco(rs.getDouble("preço"));
p.setQuantidade(rs.getInt("quantidade"));
}
return listaProdutos;
} catch (Exception e) {
return null;
}
}

este é o método responsável por fazer nosso read, no banco de dados, ele que irá
trazer as informações no banco de dados

Agora criaremos nosso método que fará a criação do novo produto no banco de dados.

public boolean create(Product product) {


try {
PreparedStatement ps =
ConnectionModule.conect().prepareStatement(
"insert into product values(?,?,?,?,?)");
ps.setString(1, product.getNome());
ps.setDouble(2, product.getPreco());
ps.setInt(3, product.getQuantidade());
ps.setString(4, product.getDescricao());
return ps.executeUpdate() > 0;
} catch (Exception e) {
return false;
}
}

Tome muito cuidado para que na hora de fazer a inserção das informações e setar no
java, não inserir o id, pois o mesmo
ele já autoincrementado, então gerará um erro em seu banco se você tentar fazer
isso, no momento do create, não utilizamos o Id.

Após fazermos o método de criação iremos fazer o método de edição, que é bem
similar ao método de criação.

public boolean edit(Product product) {


try {
PreparedStatement ps =
ConnectionModule.conect().prepareStatement(
"update product set nome=?, preco=?, quantidade=?,
descricao=? where id =?");
ps.setString(1, product.getNome());
ps.setDouble(2, product.getPreco());
ps.setInt(3, product.getQuantidade());
ps.setString(4, product.getDescricao());
ps.setInt(5, product.getId());
return ps.executeUpdate() > 0;
} catch (Exception e) {
return false;
}
}

porém o que muda, é que precisamos colocar a instrução de alteração no banco de


dados.

E logo em seguida, como precisamos puxar o id do produto tambem, preciso inserir o


parametro do PreparedStatement

com o setInt para o Id, igual fizemos nos metódos acima para nome, preco,
quantitade e descricao.

E por ultimo iremos realizar o método mais facil. O delete.

public boolean delete(Product product) {


try {
PreparedStatement ps =
ConnectionModule.conect().prepareStatement(
"delete from product where id =?");
ps.setInt(1, product.getId());
return ps.executeUpdate() > 0;
} catch (Exception e) {
return false;
}
}

que nada mais é do que inserir o parametro do getId no bloco try e inserir a função
de exclusão do banco de dados.

Após finalizarmos todos os nossos métodos da classe ProductModel, criaremos outro


pacote. com o nome de "gui"

aqui teremos os documentos e arquivos que serão utilizados para a criação de nossa
janela de aplicação com o swing do java.

Após a criação do nosso novo pacote, clique com o botaão direto no pacote e clique
em new, other e selecione em swt application window

clique em next e de um nome para a tela.


Logo após criarmos, entraremos no modo de design da tela, e então criaremos a tela,
não muito grande

e adicionaremos uma table, ou tabela, e nesta tabela iremos inserir 4


TableColumn's, com os nomes da esquerda pra direita.

de id, nome, preço e quantidade.

Neste meio tempo, vamos voltar na parte do código da janela gráfica, acima da
anotação que informa que o método abaixo

abre a janela do frame, vamos criar um método com o nome de


preencherDados(***Explicar o método***)

De novo na janela de edição adicionamermos dentro da tabela de coluna um novo


TableItem, e voltaremos ao codigo para fazer a identação da propriedade.

na identação chamaremos o TableItem tableItem com a visualização privada, e


excluiremos a parte TableItem no linha códigos mais inferior da nossa classe.

Deste modo. tableItem = new TableItem(table, SWT.NONE);

mais uma vez de volta ao codigo iremos clicar no tableitem e no text do mesmo,
iremos clicar nos 3 pontinhos

e digitar 'a' e dar ok. Voltaremos ao código para podermos popular o método
preencher dados com o nosso select do banco de dados.

O 'a' serve para que possamos pegar a propriedade do text, para podermos inserir os
valores no método.

No nosso método preencherDados iremos realizar o seguinte processo.

private void preencherDados() {


ProductModel pm = new ProductModel();
for(Product p : pm.findAll())
tableItem.setText(new String[] {String.valueOf(p.getId()),
p.getNome(), String.valueOf(p.getPreco()),
String.valueOf(p.getQuantidade())});
}

após terminarmos o método, iremos adicionar no método que abre a janela apaixo do
método que cria os contents.

Agora voltaremos e terminaremos nosso grid da janela

Iremos add um label para o Id, e um text para o Id tambem, e repetir o processo
para todos os campos e setar as propriedades deles no nosso projeto.

exemplo, por boas práticas, precisamos colocar sempre o nome da variavel dos
componentes como. ex: button, btnSalvar, ou txtNome e por assim vai...

Adicionaremos tambem um botão com o nome da variavel de salvar. Dando duplo click
no botao, será redirecionado ao código do botão onde faremos uma nova instancia de
Product,

Dentro de widgetSelected, faremos a instancia.


Ficará desta forma

@Override
public void widgetSelected(SelectionEvent e) {
Product p = new Product();
p.setDescricao(txtDescricao.getText());
p.setNome(txtNome.getText());
p.setPreco(Double.parseDouble(txtPreco.getText()));
p.setQuantidade(Integer.parseInt(txtQuantidade.getText()));
if(pm.create(p)) {
JOptionPane.showMessageDialog(null, "Novo produto
adicionado com sucesso!");
preencherDados();
} else JOptionPane.showMessageDialog(null, "Falha ao tentar
adicionar novo produto!");
}
});
btnSalvar.setBounds(101, 292, 75, 25);
btnSalvar.setText("Salvar");
}

agora na tela de edição na nossa tabela, clique com o botão direito e vá em add
event handler, select, widgetSelected.

No nosso handler iremos fazer a seguinte população do método

tableProduct.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
TableItem[] selection = tableProduct.getSelection();
int id = Integer.parseInt(selection[0].getText());
Product p = pm.find(id);
txtDescricao.setText(p.getDescricao());
IdTxt.setText(String.valueOf(p.getId()));
txtNome.setText(p.getNome());
txtPreco.setText(String.valueOf(p.getPreco()));
txtQuantidade.setText(String.valueOf(p.getQuantidade()));
}
});

Após terminas o nosso novo evento, iremos criar mais um botão em nossa aplicação,
dessa vez o botão de deletar.

Novamente clicando 2x no botão, para irmos até código dele, vamos fazer a
implementação do código.

public void widgetSelected(SelectionEvent e) {


int result = JOptionPane.showConfirmDialog
(null, "Tem certeza que quer excluir o produto?",
"Confirmar", JOptionPane.YES_NO_OPTION);
if(result == JOptionPane.YES_OPTION) {
TableItem[] selection = tableProduct.getSelection();
int id = Integer.parseInt(selection[0].getText());
Product p = pm.find(id);
pm.delete(p);
preencherDados();
}
}
O método do botão ficara mais ou menos desse jeito, conforme mostrado acima,
criando uma variavel do tipo inteiro para que possa

receber o resultado da confirmação para que possamos realmente excluir o produto.

Por fim, iremos criar o nosso ultimo componente para que possamos fazer a alteração
do produto, o nosso botão de update!

fazendo o mesmo processo como no botão de deletar, vamos dar um duplo click no
nosso botão de alteração e ir até o código, no código iremos

implementar o método conforme o mostrado abaixo.

@Override
public void widgetSelected(SelectionEvent e) {
Product p = new Product();
p.setId(Integer.parseInt(IdTxt.getText()));
p.setDescricao(txtDescricao.getText());
p.setNome(txtNome.getText());
p.setPreco(Double.parseDouble(txtPreco.getText()));
p.setQuantidade(Integer.parseInt(txtQuantidade.getText()));
if(pm.create(p)) {
JOptionPane.showMessageDialog
(null, "Alteração do produto realizada com
sucesso!");
preencherDados();
} else JOptionPane.showMessageDialog
(null, "Falha ao tentar alterar o produto!");
}

E por fim rodar o projeto.

Banco de dados, Produtos tabela product

id int(25) not null, auto increment

nome varchar(250)

preco decimal(10,0)

quantidade int(11)

descricao text.

Você também pode gostar