registro foi salvo. hummm , o que aconteceu com o sql ?? sera que atualizou ?R: Sim.O sql e esse mesmo, lembre-se que no dao usamos t.update(sql, params.toArray()); e os valores estao no List<Object> params.Feche o programa e abra ele de novo que mostrara o registro atualizado.13) Fechando a tela de edicao e atualizando a GradeI) Na classe ContatoTableModel vamos implementar uma funcao que atualize essa grade : public void atualizaLista(List<Contato> lista) { this.lista = lista; }II) Na classe frameListaContatos vamos criar uma funcao que chama essa q atualiza a lista p/ poder chamar da janela de edicao apos salvar o Registro public void atualizaGrade(){ this.getTableModel().atualizaLista(this.getDao().listar()); jTable1.updateUI(); }III) Na classe frameEditaContato apos salvar o Registro, chame a funcao da janela pai atualizaGrade e em seguida fechar , e gere a funcao getFlC() para acessar frame Pai public frameListaContatos getFlC() { return flC; } E a funcao salvar ficou assim private void salvarContato() { Contato C = new Contato(); //Solucao 1 : validacao manual String preMessage = "Verifique os seguintes erros:\n"; String message = ""; if (!"".equals(jTFNome.getText())) { message += "- Nome deve ser preenchido \n"; } if (message.length() > 0) { if ("".equals(jTFId.getText())) { C.setId(0); } else { C.setId(Integer.parseInt(jTFId.getText())); C.setNome(jTFNome.getText()); C.setTelefone(jTFTelefone.getText()); } this.contato = C; try { this.getDao().salvar(this.getContato()); System.out.println("Salvando Contato:" + C.getNome()); this.getFlC().atualizaGrade(); this.dispose(); } catch (java.lang.NullPointerException npe) { System.out.println("Erro ao Salvar o Contato."); Logger.getLogger(frameEditaContato.class.getName()).log(Level.SEVERE, null, npe); } } else { JOptionPane.showMessageDialog(null, preMessage + message); }13 )Teste o programa.I) Edite um contato e salve veja se esta tudo funcionando, apos salvar a tela de edicao deve fechar e a Grade de baixo atualizar. :Meu Output :run:Sep 21, 2012 8:37:06 PM org.springframework.context.support.AbstractApplicationContext prepareRefreshINFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@48ff2413: startup date [Fri Sep 21 20:37:06 BRT 2012]; root of context hierarchySep 21, 2012 8:37:06 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitionsINFO: Loading XML bean definitions from class path resource [beans-definitions.xml]Sep 21, 2012 8:37:07 PM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletonsINFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@469a9b65: defining beans [dataSource,jdbcTemplate,ContatoDao]; root of factory hierarchySep 21, 2012 8:37:07 PM org.springframework.jdbc.datasource.DriverManagerDataSource setDriverClassNameINFO: Loaded JDBC driver: com.mysql.jdbc.DriverSep 21, 2012 8:37:08 PM org.springframework.jdbc.datasource.SingleConnectionDataSource initConnectionINFO: Established shared JDBC Connection: com.mysql.jdbc.JDBC4Connection@52b57e9aContato Ativo na memoria: Cliente 2 renomeadoSQL:UPDATE `springlessons`.`contato` SET `nome` = ?, `telefone` = ? WHERE `id` = ? Salvando Contato:Cliente 2 renomeado de novoEncerrando programa BUILD SUCCESSFUL (total time: 1 minute 59 seconds)14) Salvando novos registros : esse ficou facilI) Na classe frameListaContatos vamos criar uma funcao que chama o cadastroClique duas vezes no botao novo : private void jBtNovoActionPerformed(java.awt.event.ActionEvent evt) { abreFrameEdit(new Contato()); }II) E mande atualizar o label Total apos as insercoes / atualizacoes: public void atualizaGrade(){ this.getTableModel().atualizaLista(this.getDao().listar()); jTable1.updateUI(); jLbTotal.setText(this.getTableModel().getRowCount() + ""); }Teste o programa. Veja se o label total esta atualizando apos inserir registros.15) Removendo registros :(DELETE) : CRUDI) Vamos fazer funcao delete no contatoDAO e a acao do botao Removerspringlesson06.dao.ContatoDAO , adicione a funcao abaixo public void apagar(Contato C) { JdbcTemplate t = getJdbcTemplate(); String sql = null; List<Object> params = new ArrayList<Object>(); sql = "DELETE FROM `springlessons`.`contato` " + " WHERE `id` = ? "; params.add(C.getId());// System.out.println("SQL:" + sql); t.update(sql, params.toArray()); }II) Na classe frameListaContatos vamos criar uma funcao que chama o cadastroClique duas vezes no botao remover