Quantcast
Channel: Programação - GUJ
Viewing all articles
Browse latest Browse all 33093

Lista de chave estrangeira

$
0
0

@marlonmsilva escreveu:

Olá pessoal!
Depois de muito tempo, voltei a estudar Java e recomecei junstamente pelo básico do básico. O bom e velho CRUD de País, Estado e Cidades;
Nesse momento estou encontrando dificuldades para listar os Estados juntamente com seus Países.
Infelizmente no campo País está vindo como null, e já tentei de todas as formas.
Peço-vos auxílio nesse tópico.
Seguem os fontes das minhas classes para análise.
Obrigado.

Classe Estado

package br.com.brassicales.localizacao;

public class Estado {
	
	private int codigo;
	private String nome, sigla;
	private Pais pais;
	
	public int getCodigo(){
		return this.codigo;
	}
	public void setCodigo(int codigo){
		this.codigo = codigo;
	}
	public String getNome(){
		return this.nome;
	}
	public void setNome(String nome){
		this.nome = nome;
	}
	public String getSigla(){
		return this.sigla;
	}
	public void setSigla(String sigla){
		this.sigla = sigla;
	}
	public Pais getPais(){
		return this.pais;
	}
	public void setPais(Pais pais){
		this.pais = pais;
	}
}

Classe EstadoDao

package br.com.brassicales.localizacao.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import br.com.brassicales.jdbc.ConnectionFactory;
import br.com.brassicales.localizacao.Estado;
import br.com.brassicales.localizacao.Pais;

public class EstadoDao {
	
	public Connection connection;
	
	public EstadoDao(){
		this.connection = new ConnectionFactory().getConnection();
	}
	
	public void adiciona(Estado estado){

		String sql = "insert into estado(nome, sigla, pais) values (?,?,?)";
		
		try{
			PreparedStatement stmt = connection.prepareStatement(sql);
			stmt.setString(1, estado.getNome().toUpperCase());
			stmt.setString(2, estado.getSigla().toUpperCase());
			stmt.setObject(3, estado.getPais().getCodigo());
			
			stmt.execute();
			stmt.close();
			
		}catch(SQLException e){
			throw new RuntimeException(e);
		}
		
	}
	public List<Estado> gelista(){
		List<Estado> estados = new ArrayList<>();
		try{
			
			PreparedStatement stmt = this.connection.prepareStatement("select * from estado");
			ResultSet rs = stmt.executeQuery();
			
			while(rs.next()){
				Estado estado = new Estado();
				Pais pais = new Pais();
				estado.setPais(pais);
				
				estado.setCodigo(rs.getInt("codigo"));
				estado.setNome(rs.getString("nome"));
				estado.setSigla(rs.getString("sigla"));
				pais.setCodigo(rs.getInt("codigo"));
				
				estados.add(estado);
				
			}
				stmt.executeQuery();
				stmt.close();

		} catch(SQLException e){
			throw new RuntimeException(e);
		}
		
		return estados;
	}
	public void altera(Estado estado){
		
		String sql = "update estado set nome=?, sigla=?, pais=? where codigo=?";
		try{
			
			PreparedStatement stmt = connection.prepareStatement(sql);
			stmt.setString(1, estado.getNome().toUpperCase());
			stmt.setString(2, estado.getSigla().toUpperCase());
			stmt.setObject(3, estado.getPais().getCodigo());
			stmt.setInt(4, estado.getCodigo());
			
			stmt.execute();
			stmt.close();
			
		} catch(SQLException e){
			throw new RuntimeException(e);
		}
		
	}
	public void remove(Estado estado){
		
		String sql = "delete from estado where codigo=?";
		try{
			
			PreparedStatement stmt = connection.prepareStatement(sql);
			stmt.setInt(1, estado.getCodigo());
			
			stmt.execute();
			stmt.close();
			
		}catch(SQLException e){
			throw new RuntimeException(e);
		}
		
	}
}

Classe ListaEstado

package br.com.brassicales.localizacao.crud;

import java.util.List;
import br.com.brassicales.localizacao.Estado;
import br.com.brassicales.localizacao.Pais;
import br.com.brassicales.localizacao.dao.EstadoDao;

public class ListaEstado {
	
	public static void main(String[] args) {
		
		EstadoDao estadoDao = new EstadoDao();
		List<Estado> estados = estadoDao.gelista();
		
		Estado estado = new Estado();
		Pais pais = new Pais();
		estado.setPais(pais);
		
		for(Estado listaEstado : estados){
			System.out.println("Código: " + listaEstado.getCodigo());
			System.out.println("Nome: " + listaEstado.getNome());
			System.out.println("Sigla " + listaEstado.getSigla() + "\n");
			
			System.out.println("País: " + listaEstado.getPais().getNome());
			System.out.println("País: " + estado.getPais().getNome());
			System.out.println("País: " + pais.getNome() + "\n");
		}
	}
}

Na classe ListaEstado estão os três métodos que utilizei para imprimir o nome do País do Estado, mas não consegui. Antes de tudo, quero dizer que tentei encontrar algo relacionado aqui no GUJ, porém, sem sucesso. Acho que eu mesmo já abri um tópico desses, mas isso foi há 5 anos e não mais os encontrei.

Mensagens: 2

Participantes: 2

Ler tópico completo


Viewing all articles
Browse latest Browse all 33093


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>