1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Como fazer select utilizando inner join com mais de uma classes contendo get e set

Estou com uma dúvida que não consegui encontrar solução no Google, eu utilizo o padrão MVC no java, o problema é quando eu vou fazer um select utilizando inner join, eu tenho as classes modelo com getters e setters, como crio um List das duas classes, eu utilizo assim, eu vou usando extends nas classes modelos que quero criar a List, como faço para criar uma List com inner join sem ter que extender as classes.

Meu código tá assim:

Model entrada, estendo de tipo_entrada

public class entrada extends tipo_entrada{

    private int id_entrada;
    private int id_tipo;
    private int id_forma;
    private double valor;
    private String obs;
    private Date data;


    /**
     * Construtos sem param
     */
    public entrada() {

    }

    /**
     * Construtor com param
     *
     * @param id_tipo
     * @param id_forma
     * @param valor
     * @param obs
     * @param data
     */
    public entrada(int id_tipo, int id_forma, double valor, String obs, Date data) {
        this.id_tipo = id_tipo;
        this.id_forma = id_forma;
        this.valor = valor;
        this.obs = obs;
        this.data = data;
    }

    public Date getData() {
        return data;
    }

    public void setData(Date data) {
        this.data = data;
    }

    public int getId_entrada() {
        return id_entrada;
    }

    public void setId_entrada(int id_entrada) {
        this.id_entrada = id_entrada;
    }

    public int getId_tipo() {
        return id_tipo;
    }

    public void setId_tipo(int id_tipo) {
        this.id_tipo = id_tipo;
    }

    public int getId_forma() {
        return id_forma;
    }

    public void setId_forma(int id_forma) {
        this.id_forma = id_forma;
    }

    public double getValor() {
        return valor;
    }

    public void setValor(double valor) {
        this.valor = valor;
    }

    public String getObs() {
        return obs;
    }

    public void setObs(String obs) {
        this.obs = obs;
    }

}

Model tipo_entrada estendendo de forma_receb

public class tipo_entrada extends forma_receb{

    private int id_tipo;
    private String tipo;


    public tipo_entrada() {

    }

    /**
     * Construtor com param
     * @param tipo 
     */
    public tipo_entrada(String tipo) {
        this.tipo = tipo;
    }

    public int getId_tipo() {
        return id_tipo;
    }

    public void setId_tipo(int id_tipo) {
        this.id_tipo = id_tipo;
    }

    public String getTipo() {
        return tipo;
    }

    public void setTipo(String tipo) {
        this.tipo = tipo;
    }


}

Model forma_receb, essa eu não precisei estender

public class forma_receb {

    private int id_forma;
    private String forma;

    /**
     * Construtor sem param
     */
    public forma_receb() {

    }

    /**
     * Construtor com param
     * @param forma 
     */
    public forma_receb(String forma) {
        this.forma = forma;
    }

    public int getId_forma() {
        return id_forma;
    }

    public void setId_forma(int id_forma) {
        this.id_forma = id_forma;
    }

    public String getForma() {
        return forma;
    }

    public void setForma(String forma) {
        this.forma = forma;
    }


}

EntradaDAO

public List<entrada> getLista() throws SQLException {
        String sql = "SELECT entrada.id_entrada,tipo_entrada.tipo,forma_receb.forma,entrada.obs,entrada.data,entrada.valor \n"
                + "FROM entrada\n"
                + "INNER JOIN tipo_entrada \n"
                + "ON entrada.id_tipo = tipo_entrada.id_tipo\n"
                + "INNER JOIN forma_receb\n"
                + "ON entrada.id_forma = forma_receb.id_forma\n"
                + "ORDER BY entrada.id_entrada;";
        List<entrada> lista = new ArrayList<>();
        PreparedStatement pst = conn.prepareStatement(sql);
        ResultSet rs = pst.executeQuery();
        while(rs.next()){
            entrada e = new entrada();
            e.setId_entrada(rs.getInt("id_entrada"));
            e.setTipo(rs.getString("tipo"));
            e.setForma(rs.getString("forma"));
            e.setObs(rs.getString("obs"));
            e.setData(rs.getDate("data"));
            e.setValor(rs.getDouble("valor"));
            lista.add(e);
        }
        rs.close();
        pst.close();
        return lista;
    }

Utilizo esse método no JFrame pra preencher a tabela

public void preencher_tabela() {
        SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
        entrada_controller ec = new entrada_controller();
        try {
            List<entrada> lista = ec.getLista_entrada();
            DefaultTableModel modelo = (DefaultTableModel) jTableEntrada.getModel();
            for (int i = modelo.getRowCount() - 1; i >= 0; i--) {
                modelo.removeRow(i);
            }
            if (lista != null) {
                for (int i = 0; i < lista.size(); i++) {
                    entrada entrada = lista.get(i);
                    Object[] dados = new Object[]{
                        false,
                        entrada.getId_entrada(),
                        entrada.getTipo().getTipo(),
                        entrada.getValor(),
                        entrada.getForma().getForma(),
                        dateFormat.format(entrada.getData())
                    };
                    modelo.insertRow(i, dados);
                }
                jTableEntrada.setModel(modelo);
            } else {
                JOptionPane.showMessageDialog(this, "Nenhum resultado encontrado");
            }
        } catch (SQLException ex) {
            Logger.getLogger(consulta_entrada.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

Então pessoal, queria saber se está correto ou se tem uma forma de fazer sem precisar estender as classes, me ajudem aii.

  • Alguem por favor

    lucas240596   26 de jun de 2016
  • Amigo só uma dica tente usar as boas regras e as convenções do java, classe começa com Letra maiúscula e as divisões das palavras exemplo "PreencherTabela" entre outra coisa http://www.tiexpert.net/programacao/java/nomenclatura.php

    Anderson Andrade   07 de mai de 2017
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java sql ou faça a sua própria pergunta.