Requisitos :
- Java & Mysql
- Netbeans 7.2
- spring-3.2.0.M2
- Ter lido :
Posts Anteriores :
JSNBTut - Lesson 1 - introdução ao Spring
JSNBTut - Lesson 2 - introdução ao gerenciamento de dependências no Spring
1- Crie um banco de dados Mysql : chamarei de springlessons, logue como root em um banco Mysql e crie o usuario e o banco :
CREATE USER 'springlessons'@'%' IDENTIFIED BY 'DHADdSXcDF29WGXy'; GRANT ALL PRIVILEGES ON * . * TO 'springlessons'@'%' IDENTIFIED BY 'DHADdSXcDF29WGXy' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ; CREATE DATABASE IF NOT EXISTS `springlessons` ; GRANT ALL PRIVILEGES ON `springlessons` . * TO 'springlessons'@'%';
Opcional : arquivo do MysqlWorkBench para criar o banco
springLessons.mwb
2 - Crie as tabela no banco de dados Mysql
![]() |
Figura 01 - tabelas do banco |
CREATE TABLE IF NOT EXISTS `springlessons`.`tblOrder` ( `id` INT NOT NULL AUTO_INCREMENT , `customer` VARCHAR(45) NULL , PRIMARY KEY (`id`) ) ENGINE = InnoDB
CREATE TABLE IF NOT EXISTS `springlessons`.`tblOrderItem` ( `id` INT NOT NULL AUTO_INCREMENT , `orderId` INT NOT NULL , `product` VARCHAR(45) NULL , `price` DOUBLE NULL , `quantity` DOUBLE NULL , PRIMARY KEY (`id`) , INDEX `orderItem_order_FK` (`orderId` ASC) , CONSTRAINT `orderItem_order_FK` FOREIGN KEY (`orderId` ) REFERENCES `springlessons`.`tblOrder` (`id` ) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB
3 - Abra o Netbeans e clique em File -> new Project :
![]() |
Figura 02- Novo projeto |
![]() | |
|
![]() |
Figura 04 - projeto SpringLesson03 |
![]() |
Figura 05 - Projeto criado pelo wizard |
6 - Adicione as bibliotecas necessárias : Spring e o driver do Mysql
![]() |
Figura 06 - Adicione as libs |
no projeto, voce deve estar visualizando isso :
![]() |
Figura 07 - Arquivos do projeto |
Agora vamos começar a codificar.
Podemos utilizar o NB p/ facilitar algumas coisas.
7 - vamos criar uma classe que faz parte M do modelo MVC, chamada Order em um package springlesson03.beans
I) Crie o arquivo springlesson03.beans.Order
![]() |
Figura 08- Nova classe java |
![]() | |
|
II) Edite o arquivo springlesson03.beans.Order que usaremos p/ armazenar dados que estiverem na tabela tblOrder
![]() |
Figura 10 - Classe Order criada |
Adicione o seguinte código nesse arquivo Order.java
public Integer id; public String customer; public List<OrderItem> itens;
ao adicionar a linha private List<OrderItem> itens; o NB fará duas reclamações :
1ª - não conhece o tipo List, adicione a classe java.util.List
![]() |
Figura 11 - Sugestão NB |
2ª - não conhece o tipo OrderItem, deixe o NB criar essa classe dentro do mesmo package, que logo editaremos.
![]() |
Figura 12 - Sugestão NB |
III) Clique com botão direito e escolha Refactor >> Encapsulate Fields
![]() |
Figura 13 - Refatoração Order,java |
![]() |
Figura 14 - Encapsulamento Order.java |
Conteúdo da classe springlesson03.beans.Order.java
package springlesson03.beans; import java.util.List; public class Order { private Integer id; private String customer; private List<OrderItem> itens; /** * @return the id */ public Integer getId() { return id; } /** * @param id the id to set */ public void setId(Integer id) { this.id = id; } /** * @return the customer */ public String getCustomer() { return customer; } /** * @param customer the customer to set */ public void setCustomer(String customer) { this.customer = customer; } /** * @return the itens */ public List<OrderItem> getItens() { return itens; } /** * @param itens the itens to set */ public void setItens(List<OrderItem> itens) { this.itens = itens; } }
8 - Vamos editar a classe que faz parte M do modelo MVC, chamada OrderItem no package springlesson03.beans
I) Adicione o seguinte código nesse arquivo OrderItem.java
public Integer id; public Order order; public String product; public double price; public double quantity;
II) E vamos utilizar o atalho Refactor >> Encapsulate Fields
![]() |
Figura 16 - Refatoração OrderItem,java |
![]() | |
|
Conteúdo da classe springlesson03.beans.OrderItem.java
package springlesson03.beans; class OrderItem { private Integer id; private Order order; private String product; private double price; private double quantity; /** * @return the id */ public Integer getId() { return id; } /** * @param id the id to set */ public void setId(Integer id) { this.id = id; } /** * @return the order */ public Order getOrder() { return order; } /** * @param order the order to set */ public void setOrder(Order order) { this.order = order; } /** * @return the product */ public String getProduct() { return product; } /** * @param product the product to set */ public void setProduct(String product) { this.product = product; } /** * @return the price */ public double getPrice() { return price; } /** * @param price the price to set */ public void setPrice(double price) { this.price = price; } /** * @return the quantity */ public double getQuantity() { return quantity; } /** * @param quantity the quantity to set */ public void setQuantity(double quantity) { this.quantity = quantity; } }
9- Vamos criar o arquivo XML que conterá as definições dos beans, do Spring e da conexão ao banco.
I) Clique com o botão direito no projeto e escolha New >> XML Document. Vamos criar nosso conhecido beans-definitions.xml
![]() | |
|
![]() |
Figura 19 - tipo de arquivo XML |
II) Adicione o seguinte código nesse arquivo beans-definitions.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <bean id="dataSource" name="dataSource" class="org.springframework.jdbc.datasource.SingleConnectionDataSource"> <constructor-arg index = "0" value = "com.mysql.jdbc.Driver"></constructor-arg> <constructor-arg index = "1" value = "jdbc:mysql://ns1/springlessons"></constructor-arg> <constructor-arg index = "2" value = "springlessons"></constructor-arg> <constructor-arg index = "3" value = "DHADdSXcDF29WGXy"></constructor-arg> <constructor-arg index = "4" value = "true"></constructor-arg> </bean> <bean name="jdbcTemplate" id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"></property> </bean> <bean name="orderDao" id="orderDao" class="springlesson03.dao.OrderDao"> <property name="jdbcTemplate" ref="jdbcTemplate"></property> </bean> </beans>
Observe que:
1º criamos um beam chamado dataSource que indica a classe org.springframework.jdbc.datasource.SingleConnectionDataSource que em vez de tags <property></property> utiliza tags <construtor-arg></construtor-arg> com os atributos index e value.
Obs:
index=0 -- Driver
index=1 -- String JDBC de conexão jdbc://<tipoBanco>://<servidorDB>/<nomeBanco>
index=2 -- Usuário / Login do banco
index=3 -- Senha ;
index=4 -- se não colocar esse parametro dá esse erro ao compilar o projeto:
![]() |
Figura 20 - erro de compilação sem o parametro index=4 |
2º criamos um beam chamado jdbcTemplate que indica a classe org.springframework.jdbc.core.JdbcTemplate e tem uma propriedade name="dataSource" ref="dataSource"
3º criamos um beam chamado orderDao que indica a classe springlesson03.dao.OrderDao (que será criada) e tem uma propriedade name="jdbcTemplate" ref="jdbcTemplate"
10 - Vamos criar o nosso DAO que fará o acesso aos dados no banco. Crie uma Classe chamada OrderDao dentro do package springlesson03.dao para atender as definições de nosso beam orderDao do XML.
<bean name="orderDao" id="orderDao" class="springlesson03.dao.OrderDao"> <property name="jdbcTemplate" ref="jdbcTemplate"></property> </bean>
Nessa Classe iremos extender a classe JdbcDaoSupport do Spring (org.springframework.jdbc.core.support.JdbcDaoSupport).
Antes de ver o código completo,
I) o que precisamos nesse arquivo ?
- Funções comuns ao DAO como:
- Fazer consultas e atribuir os resultados a Arrays ou Listas de Objetos
- Executar comandos de insert,update,delete
II) o que precisamos saber ?
- que o objeto JdbcTemplate do spring utiliza o metodo getJdbcTemplate() ;
- que o método query desse objeto recebe 3 parâmetros sendo eles:
- param 1- Consulta SQL utilizando como valores de parâmetros o caracter ? ;
- param 2- um objeto prototipado utilizando o objeto nativo Object[]{};
- param 3- a classe que implementa a classe RowMapper (org.springframework.jdbc.core.RowMapper) do Spring (que criaremos adiante)
III) Clique com o botão direito no projeto e escolha New>> Java Class
Vamos criar a classe OrderItemRowMapper que implementa o RowMapper e o package springlesson03.dao
![]() |
Figura 21 - Classe OrderItemRowMapper |
Conteúdo do arquivo springlesson03.dao.OrderItemRowMapper.java
package springlesson03.dao; import java.sql.ResultSet; import java.sql.SQLException; import org.springframework.jdbc.core.RowMapper; import springlesson03.beans.OrderItem; public class OrderItemRowMapper implements RowMapper{ @Override public Object mapRow(ResultSet rs, int rowNum) throws SQLException { OrderItem item = new OrderItem(); item.setProduct(rs.getString("product")); item.setQuantity(rs.getDouble("quantity")); item.setPrice(rs.getDouble("price")); return item; } }
IV) Clique com o botão direito no projeto e escolha New>> Java Class
Vamos criar a classe OrderDao
Nessa Classe iremos extender a classe JdbcDaoSupport do Spring (org.springframework.jdbc.core.support.JdbcDaoSupport).
![]() |
Figura 22 - Classe OrderDao package springlesson03.dao |
Conteúdo do arquivo springlesson03.dao.OrderDao.java
package springlesson03.dao; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.support.JdbcDaoSupport; import springlesson03.beans.Order; import springlesson03.beans.OrderItem; public class OrderDao extends JdbcDaoSupport { private JdbcTemplate t; public OrderDao() { super(); this.t = getJdbcTemplate(); } public void save(Order order) { if (order.getId() == null) { insert(order); } else { update(order); } } public List<OrderItem> getOrdemItens(Integer orderId) { List<OrderItem> myList = null; String sqlQuery = "SELECT `tblOrderItem`.`id`, `tblOrderItem`.`orderId`,`tblOrderItem`.`product`," + "`tblOrderItem`.`price`,`tblOrderItem`.`quantity` FROM `springlessons`.`tblOrderItem` " + " WHERE orderId = ?"; myList = t.query(sqlQuery, new Object[]{orderId}, new OrderItemRowMapper()); return myList; } public List<OrderItem> getOrdemItens(Order order) { List<OrderItem> myList = null; String sqlQuery = "SELECT `tblOrderItem`.`id`, `tblOrderItem`.`orderId`,`tblOrderItem`.`product`," + "`tblOrderItem`.`price`,`tblOrderItem`.`quantity` FROM `springlessons`.`tblOrderItem` " + " WHERE orderId = ?"; myList = t.query(sqlQuery, new Object[]{order.getId()}, new OrderItemRowMapper()); return myList; } private void insert(Order order) { t = getJdbcTemplate(); String sqlInsert = "INSERT INTO `springlessons`.`tblOrder`" + "(`id`,`customer`) VALUES (?,?)"; t.update("INSERT INTO `springlessons`.`tblOrder` (`id`,`customer`) VALUES (?,?)", new Object[]{0, order.getCustomer()}); int orderNo = t.queryForInt("SELECT MAX(id) FROM `springlessons`.`tblOrder`"); for (OrderItem item : order.getItens()) { String sqlInsertItem = "INSERT INTO `springlessons`.`tblOrderItem` " + "(`id`,`orderId`,`product`,`price`,`quantity`) " + "VALUES(?,?,?,?,?)"; t.update(sqlInsertItem, new Object[]{0, orderNo, item.getProduct(), item.getPrice(), item.getQuantity()}); } } private void update(Order order) { t = getJdbcTemplate(); throw new UnsupportedOperationException("Not yet implemented"); } // classe implementada no mesmo arquivo apenas por causa da função getOrdemItens class OrderRowMapper implements RowMapper { @Override public Object mapRow(ResultSet rs, int rowNum) throws SQLException { Order order = new Order(); order.setId(rs.getInt("id")); order.setCustomer(rs.getString("customer")); order.setItens(getOrdemItens(order)); return order; } } public List<Order> getOrdens() { List<Order> myList = null; String sqlQuery = "SELECT `tblOrder`.`id`, `tblOrder`.`customer` FROM `springlessons`.`tblOrder`"; myList = t.query(sqlQuery, new OrderRowMapper()); return myList; } }
A essa altura seu projeto deve estar assim :
![]() |
Figura 23 - Arquivos do projeto |
11 - Vamos ver como fica a implementação disso tudo :
I) Vamos consultar o banco . Edite o arquivo springlesson03.MainClass e adicione o seguinte código:
package springlesson03; import java.util.List; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import springlesson03.beans.Order; import springlesson03.beans.OrderItem; import springlesson03.dao.OrderDao; public class MainClass { public static void main(String args[]) { // Iniciando a applicação e o gerenciador de contexto do Spring ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-definitions.xml"); OrderDao dao = (OrderDao) ctx.getBean("orderDao"); // mostrando os registros cadastrados List<Order> ordens = dao.getOrdens(); System.out.println("Lista Atual"); for (Order or : ordens) { System.out.println(or.getId() + "-" + or.getCustomer()); List<orderitem> itens = or.getItens(); for (OrderItem it : itens) { System.out.println("Product:" + it.getProduct() + "\tQuantidade: " + it.getQuantity() + "\tPreco: " + it.getPrice()); } // System.out.println(or.getItens()) ; //retorna o endereço do bean System.out.println("----------------------------------------------------------------"); } } }e Clique no Run Project. Observe que dará um erro.
![]() |
Figura 24 - Erro de compilação , não existem registros no banco |
Isso acontece porque ainda não existem registros no banco, neste momento resolvemos isso pondo dentro de um try/catch :
package springlesson03; import java.util.List; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import springlesson03.beans.Order; import springlesson03.beans.OrderItem; import springlesson03.dao.OrderDao; public class MainClass { public static void main(String args[]) { // Iniciando a applicação e o gerenciador de contexto do Spring ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-definitions.xml"); OrderDao dao = (OrderDao) ctx.getBean("orderDao"); // mostrando os registros cadastrados try { List<Order> ordens = dao.getOrdens(); System.out.println("Lista Atual"); for (Order or : ordens) { System.out.println(or.getId() + "-" + or.getCustomer()); List<OrderItem> itens = or.getItens(); for (OrderItem it : itens) { System.out.println("Product:" + it.getProduct() + "\tQuantidade: " + it.getQuantity() + "\tPreco: " + it.getPrice()); } // System.out.println(or.getItens()) ; //retorna o endereço do bean System.out.println("----------------------------------------------------------------"); } } catch (java.lang.NullPointerException npe) { System.out.println(npe.getMessage()); System.out.println("Ainda não existem registros no Banco"); } } }Clique no Run Project.Observe o resultado BUILD SUCCESSFUL (total time: 2 seconds)
![]() |
Figura 25 - 1ª compilação do projeto com sucesso, ainda não existem registros no banco |
II) Vamos inserir dados no banco . Edite o arquivo springlesson03.MainClass e troque seu conteúdo pelo seguinte código:
package springlesson03; import java.util.ArrayList; import java.util.List; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import springlesson03.beans.Order; import springlesson03.beans.OrderItem; import springlesson03.dao.OrderDao; public class MainClass { public static void main(String args[]) { //criando o Objeto Order e atribuindo valores Order order = new Order(); order.setCustomer("Mario Cezzare"); //criando o Objeto OrderItem e atribuindo valores OrderItem item = new OrderItem(); item.setProduct("Product 1"); item.setQuantity(2.0); item.setPrice(14.37); // criando lista de objetos OrderItem p/ atibuir ao objeto order //utilizando o método setItens() List<OrderItem> itensList = new ArrayList<OrderItem>(); itensList.add(item); order.setItens(itensList); System.out.println("Inserido"); // Iniciando a applicação e o gerenciador de contexto do Spring ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-definitions.xml"); OrderDao dao = (OrderDao) ctx.getBean("orderDao"); // salvando nosso objeto order dao.save(order); // mostrando os registros cadastrados try { List<Order> ordens = dao.getOrdens(); System.out.println("Lista Atual"); // varrendo as ordens for (Order or : ordens) { System.out.println(or.getId() + "-" + or.getCustomer()); System.out.println(or.getItens()) ; //retorna o endereço do bean System.out.println("----------------------------------------------------------------"); } } catch (java.lang.NullPointerException npe) { System.out.println(npe.getMessage()); System.out.println("Ainda não existem registros no Banco"); } } }Clique no Run Project.Observe o resultado :
Inserido Sep 19, 2012 12:36:12 AM org.springframework.context.support.AbstractApplicationContext prepareRefresh INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@6791d8c1: startup date [Wed Sep 19 00:36:12 BRT 2012]; root of context hierarchy Sep 19, 2012 12:36:12 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions INFO: Loading XML bean definitions from class path resource [beans-definitions.xml] Sep 19, 2012 12:36:13 AM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@250d593e: defining beans [dataSource,jdbcTemplate,orderDao]; root of factory hierarchy Sep 19, 2012 12:36:13 AM org.springframework.jdbc.datasource.DriverManagerDataSource setDriverClassName INFO: Loaded JDBC driver: com.mysql.jdbc.Driver Sep 19, 2012 12:36:14 AM org.springframework.jdbc.datasource.SingleConnectionDataSource initConnection INFO: Established shared JDBC Connection: com.mysql.jdbc.JDBC4Connection@4edc41c5 Lista Atual 13-Mario Cezzare [springlesson03.beans.OrderItem@5d6ea269]
![]() |
Figura 26 - 2ª compilação do projeto com sucesso, inseriu o 1º cliente com itens e fez uma consulta |
O registro foi inserido e a lista consultada, porém a linha or.getItens contém um array de itens que precisa ser varrido. Para isso vamos fazer mais um for(){} para o array de OrderItens
III) Vamos alterar novamente o arquivo MainClass.java, dessa vez alteremos o nome do cliente order.setCustomer("Cliente 2") para inserir mais um registro no banco e ver o resultado da consulta :
Conteudo final do arquivo MainClass.java /* * Tutorial implementação Spring em Java * Author : Mario Cezzare Angelicola Chiodi mcezzare@gmail.com * Lição 3 * p/ acompanhar o tutorial veja antes http://mcezzare.blogspot.com.br/2012/09/java-spring-netbeans-72.html */ package springlesson03; import java.util.ArrayList; import java.util.List; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import springlesson03.beans.Order; import springlesson03.beans.OrderItem; import springlesson03.dao.OrderDao; public class MainClass { public static void main(String args[]) { //criando o Objeto Order e atribuindo valores Order order = new Order(); // order.setCustomer("Mario Cezzare"); order.setCustomer("Cliente 2"); //criando o Objeto OrderItem e atribuindo valores OrderItem item = new OrderItem(); item.setProduct("Product 2"); item.setQuantity(1.0); item.setPrice(10.12); // criando lista de objetos OrderItem p/ atibuir ao objeto order //utilizando o método setItens() List<OrderItem> itensList = new ArrayList<OrderItem>(); itensList.add(item); order.setItens(itensList); System.out.println("Inserido"); // Iniciando a applicação e o gerenciador de contexto do Spring ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-definitions.xml"); OrderDao dao = (OrderDao) ctx.getBean("orderDao"); // salvando nosso objeto order dao.save(order); // mostrando os registros cadastrados try { List<Order> ordens = dao.getOrdens(); System.out.println("Lista Atual"); // varrendo as ordens for (Order or : ordens) { System.out.println(or.getId() + "-" + or.getCustomer()); //varrendo os itens das ordens List<OrderItem> itens = or.getItens(); for (OrderItem it : itens) { System.out.println("Product:" + it.getProduct() + "\tQuantidade: " + it.getQuantity() + "\tPreco: " + it.getPrice()); } // System.out.println(or.getItens()) ; //retorna o endereço do bean System.out.println("----------------------------------------------------------------"); } } catch (java.lang.NullPointerException npe) { System.out.println(npe.getMessage()); System.out.println("Ainda não existem registros no Banco"); } } }
Inserido Sep 19, 2012 12:47:53 AM org.springframework.context.support.AbstractApplicationContext prepareRefresh INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@95c083: startup date [Wed Sep 19 00:47:53 BRT 2012]; root of context hierarchy Sep 19, 2012 12:47:53 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions INFO: Loading XML bean definitions from class path resource [beans-definitions.xml] Sep 19, 2012 12:47:54 AM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@16ba5c7a: defining beans [dataSource,jdbcTemplate,orderDao]; root of factory hierarchy Sep 19, 2012 12:47:54 AM org.springframework.jdbc.datasource.DriverManagerDataSource setDriverClassName INFO: Loaded JDBC driver: com.mysql.jdbc.Driver Sep 19, 2012 12:47:55 AM org.springframework.jdbc.datasource.SingleConnectionDataSource initConnection INFO: Established shared JDBC Connection: com.mysql.jdbc.JDBC4Connection@1395dd5b Lista Atual 13-Mario Cezzare Product:Product 1 Quantidade: 2.0 Preco: 14.37 ---------------------------------------------------------------- 14-Cliente 2 Product:Product 2 Quantidade: 1.0 Preco: 10.12 ---------------------------------------------------------------- BUILD SUCCESSFUL (total time: 3 seconds)
![]() |
Figura 27 - Resultado Final |
E assim concluímos nossa lição 03.
Resumo : o que foi feito ?
- Criamos um banco no Mysql
- Configuramos uma conexão com um banco de dados utilizando jdbc através da classe org.springframework.jdbc.core.JdbcTemplate;
- Utilizamos a classe ApplicationContext p/ gerenciar o contexto de nossa App. Informamos a ela que as definições dos serviços estão em um arquivo XML, através do objeto ClassPathXmlApplicationContext.
- Utilizamos a classe OrderDao extendendo a classe org.springframework.jdbc.core.support.JdbcDaoSupport e implementando a classe org.springframework.jdbc.core.RowMapper e vimos os métodos query e update do objeto JdbcTemplate (org.springframework.jdbc.core.JdbcTemplate).
- Com isso demos carga nos Objetos (Model)
- Aprendemos mais recursos do NetBeans
Download do projeto NB
SpringLesson03
Esse arquivo zip contém :
- O projeto do NB
- o arquivo do MysqlWorkBench p/ sincronizar a criação e manutenção do banco
Se você nunca utilizou o mysqlwb , ao baixar e abrir o arquivo fornecido no zip crie uma nova conexão , clicando em new Connection :
![]() |
Figura 28 - Criando uma conexão no MysqlWorkBench |
![]() |
Figura 29 - Criando uma conexão no MysqlWorkBench, clique em Store in KeyChain p/ salvar a senha |
![]() |
Figura 30 -Clique em Test Connection , o resultado deve ser esse |
Dúvidas, Contribuições, Sugestões? Poste..
Grato,
Até a próxima.
Nenhum comentário:
Postar um comentário