Fórum Pesquisa entre duas tabelas na classe DAO #419752

11/07/2012

0

Boa noite. Estou com um projeto de estudo simulando um sistema de cadastro de pedidos e estou com o seguinte problema:
tenho duas tabelas :
TB_CLIENTES
id_cliente Primary Key,
nome_fantasia
cnpj
cod_vendedor (chave estrangeira)

TB_VENDEDOR
cod_vendedor (PK)
nome
endereco

No java tenho as classes ClienteDTO e VendedorDTO com os mesmos campos do banco de dados e os seus respectivos gets e sets.

Minha classe DAO está com o seguinte código
public List<ClienteDTO> pesquisaCliente(int cod) throws ClassNotFoundException, SQLException {
		
	Connection minhaConexao = ClasseConexao.getConexao();
		List<ClienteDTO> lista = new ArrayList<>();
		
		String instrucao = SELECT tb_clientes.razao, tb_clientes.nome_fantasia from tb_clientes +
							where tb_clientes.cod_representante = ? ;
		try {
			PreparedStatement carroca = minhaConexao.prepareStatement(instrucao);
			carroca.setInt(1, cod);
			
			ResultSet rs = carroca.executeQuery();
			while (rs.next()) {
				ClienteDTO cliente = new ClienteDTO();					
				cliente.setRazao(rs.getString(razao));				
				cliente.setNomeFantasia(rs.getString(nome_fantasia));
				
				lista.add(cliente);
				
			}
		} finally {
			minhaConexao.close();
		}
		return lista;
	}


Até aqui tudo bem, pois consigo passar a lista para a pagina jsp que desejo e mostro os dados de acordo com o código do representante passado. O problema é que quero mostrar tambem os campos do vendedor, ou seja, ao invés de pesquisar apenas por tb_clientes.razao e tb_clientes.cnpj, quero fazer essa busca :
SELECT tb_clientes.razao, tb_usuario.nome from tb_clientes, tb_usuario where tb_clientes.cod_representante = ? ;

Mas não tenho a mínima ideia de como fazer. Alguem saberia me explicar como faço isso?

obrigado
Thadeu Batista

Thadeu Batista

Responder

Posts

12/07/2012

Davi Costa

Uma boa saída seria vc criar uma classe no java que tenha todos os atributos das duas classes que você queira apresentar.
Depois na classe DAO, ou vc cria uma só para ele, ou escolhe Cliente ou Vendedor para implementar esse método, vc cria um método que na chamada sql chame as duas tabelas (algum inner join)


att Davi
Responder

Gostei + 0

12/07/2012

Thadeu Batista

Oi Davi, obrigado pela resposta.

Realmente é uma saída criar uma classe para juntar os atributos das tabelas clientes e vendedor e funciona muito bem, mas esse procedimento está dentro dos padrões javaWeb? É o caminho correto juntar os atributos das duas classes para fazer esse tipo de consulta?
Responder

Gostei + 0

12/07/2012

Davi Costa

Ou vc pode por exemplo fazer isso:

cliente.setVendedor(new Vendedor());
e sempre que precisar setar os atributos do vendedor:

cliente.getVendedor().setAtributo(...)

Sem precisar criar essa classe já citada, todas as duas formas não vejo problema nenhum


att Davi
Responder

Gostei + 0

12/07/2012

Thadeu Batista

Valeu Davi. não conhecia essa opção que vc descreveu agora. já a opção de juntar os dois atributos achei mais fácil.

obrigado.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar