Classe com GETS SETS com 4 variaveis mas preciso fazer com 2 [Resolvido]

Ai pessoal tenho a seguinte consulta SQL

SELECT BESTA DE EXEMPLO

SELECT USUARIO.IDUsuariioA, USUARIO.NomeUsuarioA, NOME.IDUsuarioB, NOME.NomeUsuarioB FROM USUARIO JOIN NOME ON (USUARIO.CODIGO = NOME.CODIGO)

Bom minha duvida é a seguinte
Como faço para somente uma Classe com os metodos get e set pegar os objetos que vem do banco… Exemplo do jeito que estou fazendo se for para
para analisar está errado pois estou criando 4 variaveis…

private int IDUsuarioA;
private String NomeUsuarioA;
private int IDUsuarioB;
private String NomeUsuarioB

Depois crio os metodos gets e sets… e faço exemplo:

usuario.setIdUsuarioA(banco.getInt("IDUsuariioA"));
usuario.setNomeUsuarioA(banco.getInt("..."));
usuario.setIdUsuarioB(banco.getInt("..."));
usuario.setNomeUsuarioB(banco.getInt("..."));

Um por um…

E depois crio uma lista e adiciono nela exemplo:

ArrayList<Usuario> lista usuarios = new ArrayList<Usuario>();
depois usuarios.add(usuario);

Mas acredito que tenha como só criando um IDUsuario e um NomeUsuario em vez de 4 variaveis…
Exemplo do jeito que preciso e estou tentando fazer

private int IDUsuario; private String NomeUsuario;
e depois uma lista

private ArrayList listaUsuarios;
Mas como adiciono meus 4 campos vindo do banco em 2 variaveis?
Alguem poderia me ajudar…

Não sei se deu para entender…

Utiliza vetor com 2 casas.

String[] nome = new String[2];

Mesma coisa para Id.

No set receba por parâmetro qual posição vai ficar o nome, 0 ou 1 ou faça um contador na classe para não precisar receber por parâmetro.

Olá Douglas.

Primeiramente sempre utiliza a tag code para postar seu código. Então não tem a necessidade de você fazer isso que esta fazendo.

Pelo o que eu entendi precisa disso apenas.


private Integer codUsuario;
private String nomeUsuario;

//getters e setters

E depois de um metodo que busca por codigo os objetos salvos.

Abraços.

Renan.

SELECT USUARIO.IDUsuariioA, USUARIO.NomeUsuarioA, NOME.IDUsuarioB, NOME.NomeUsuarioB FROM USUARIO JOIN 
NOME ON (USUARIO.CODIGO = NOME.CODIGO) 

Brincadeiras à parte, não entendi muito essa consulta. Porque você tem 2 tabelas, USUARIO e NOME ?

[quote=rmendes08] SELECT USUARIO.IDUsuariioA, USUARIO.NomeUsuarioA, NOME.IDUsuarioB, NOME.NomeUsuarioB FROM USUARIO JOIN NOME ON (USUARIO.CODIGO = NOME.CODIGO)

Brincadeiras à parte, não entendi muito essa consulta. Porque você tem 2 tabelas, USUARIO e NOME ?

[/quote]

ESSE SELECT FOI UM EXEMPLO BESTA QUE CRIEI NA HORA… SÓ PARA VOCÊS ENTENDEM MINHA PERGUNTA…ELA EH MESMO REFENTE A CLASSE…
COMO EU PEGO 4 CAMPOS QUE SÃO RESPECTIVAMENTE IGUAIS SÓ MUDAM AS TABELAS E JOGO EM UM ARRAY LIST DE USUARIO…
QUE HA 2 CAMPOS CODIGO E NOME…

:wink:

Pelo que entendi vc ta com dificuldade na modelagem do seu banco, sendo que se aparecer mais 1 usuario, vc criará mais 2 atributos (cod, nome)

Se for isso mesmo, vc deve fazer igual o renanlalier disse, tem uma unica tabela, com os atributos Id,Nome

Depois pra recuperar todos os usuarios do banco, vc terá que fazer um select no banco pra retornar eles, salvando em um List

[quote=douglasmanteiga][quote=rmendes08] SELECT USUARIO.IDUsuariioA, USUARIO.NomeUsuarioA, NOME.IDUsuarioB, NOME.NomeUsuarioB FROM USUARIO JOIN NOME ON (USUARIO.CODIGO = NOME.CODIGO)

Brincadeiras à parte, não entendi muito essa consulta. Porque você tem 2 tabelas, USUARIO e NOME ?

[/quote]

ESSE SELECT FOI UM EXEMPLO BESTA QUE CRIEI NA HORA… SÓ PARA VOCÊS ENTENDEM MINHA PERGUNTA…ELA EH MESMO REFENTE A CLASSE…
COMO EU PEGO 4 CAMPOS QUE SÃO RESPECTIVAMENTE IGUAIS SÓ MUDAM AS TABELAS E JOGO EM UM ARRAY LIST DE USUARIO…
QUE HA 2 CAMPOS CODIGO E NOME…

:wink: [/quote]

Ué, e porque você não coloca a situação real ? Assim você tem muito mais chances de resolver seu problema. Particularmente, eu não entendo onde você quer chegar com isso.

O problema todo é que em uma única linha você traz dados de mais de uma tabela. Geralmente, ao fazer mapeamento objeto-relacional acabamos mapeando 1 classe -> 1 tabela. Sendo assim, se existe mais de uma tabela envolvida, o certo seria criar 1 objeto por tabela que vem na consulta, e relacionar os dois objetos.

Agora, como tem apenas 1 classe envolvida, você tem duas alternativas: cria 1 objeto por linha e seta apenas os 2 primeiros campos, ou então cria 2 objetos por linha e seta os 2 primeiros campos no primeiro objeto e os 2 último no segundo objeto;

Mas agora me veio um pensamento, será que o que você quer na sua consulta não é um UNION não ?

(SELECT USUARIO.IDUsuariioA, USUARIO.NomeUsuarioA FROM USUARIO)

UNION

(SELECT NOME.IDUsuarioB, NOME.NomeUsuarioB  FROM NOME )

[quote=rmendes08][quote=douglasmanteiga][quote=rmendes08] SELECT USUARIO.IDUsuariioA, USUARIO.NomeUsuarioA, NOME.IDUsuarioB, NOME.NomeUsuarioB FROM USUARIO JOIN NOME ON (USUARIO.CODIGO = NOME.CODIGO)

Brincadeiras à parte, não entendi muito essa consulta. Porque você tem 2 tabelas, USUARIO e NOME ?

[/quote]

ESSE SELECT FOI UM EXEMPLO BESTA QUE CRIEI NA HORA… SÓ PARA VOCÊS ENTENDEM MINHA PERGUNTA…ELA EH MESMO REFENTE A CLASSE…
COMO EU PEGO 4 CAMPOS QUE SÃO RESPECTIVAMENTE IGUAIS SÓ MUDAM AS TABELAS E JOGO EM UM ARRAY LIST DE USUARIO…
QUE HA 2 CAMPOS CODIGO E NOME…

:wink: [/quote]

Ué, e porque você não coloca a situação real ? Assim você tem muito mais chances de resolver seu problema. Particularmente, eu não entendo onde você quer chegar com isso.

O problema todo é que em uma única linha você traz dados de mais de uma tabela. Geralmente, ao fazer mapeamento objeto-relacional acabamos mapeando 1 classe -> 1 tabela. Sendo assim, se existe mais de uma tabela envolvida, o certo seria criar 1 objeto por tabela que vem na consulta, e relacionar os dois objetos.

Agora, como tem apenas 1 classe envolvida, você tem duas alternativas: cria 1 objeto por linha e seta apenas os 2 primeiros campos, ou então cria 2 objetos por linha e seta os 2 primeiros campos no primeiro objeto e os 2 último no segundo objeto;

Mas agora me veio um pensamento, será que o que você quer na sua consulta não é um UNION não ?

(SELECT USUARIO.IDUsuariioA, USUARIO.NomeUsuarioA FROM USUARIO)

UNION

(SELECT NOME.IDUsuarioB, NOME.NomeUsuarioB  FROM NOME )

[/quote]

Então era o jeito que eu estava fazendo uma classe para uma tabela, mas ai me veio a questão… Eu não consigo criar apenas 2 campos para uma tabela de 4 campos mas criando um ArrayList e adicionando os objetos nele?

Cara, por quê você não coloca suas tabelas nas formas normais primeiro (nem precisa ir longe, colocando nas 3 primeiras está ótimo). Vai ficar muito mais fácil para você mapear em objetos depois…

Você consegue fazer essa gambiarra que você está tentando sim, mas pense melhor no que isso vai dar… Na manutenção do seu código, na sua estrutura do banco, nos pobres coitados que terão que mexer no seu fonte, etc…

Ai Pessoal consegui fazer… segue abaixo um exemplo do resultado para quem tiver curiosidade…

    private int id;
    private String nome;
    
    private ArrayList<UsuarioTest> listaUsuario;

    public UsuarioTest() {
        listaUsuario = new ArrayList<>();
    }
    
    public void addSimilar(UsuarioTest usuario) {
        this.listaUsuario.add(usuario);
    }
//Abaixo há os metodos gets e sets do Codigo e Nome mas não coloquei para não ficar muito grande o POST

    public static void main(String[] args) {
        UsuarioTest usuario = new UsuarioTest();
        
        usuario.setId(1);
        usuario.setNome("Douglas");
        
        UsuarioTest usuarioA = new UsuarioTest();
        
        usuarioA.setId(2);
        usuarioA.setNome("Francisco");
        
        UsuarioTest usuarioB = new UsuarioTest();

        usuarioB.setId(3);
        usuarioB.setNome("Manteiga");
        
        usuario.addSimilar(usuarioA);
        usuario.addSimilar(usuarioB);
        
        for(UsuarioTest usu : usuario.getListaUsuario()) {
            System.out.println(usu.getId());
            System.out.println(usu.getNome());
        }

        
    }

Juro que são coisas assim que me permitem crer que eu nunca passarei fome trabalhando com desenvolvimento.
Não se sinta ofendido, douglasmanteiga, mesmo por que você parece ter iniciado os estudos agora. O que quero dizer é que tem gente que programa assim “profissionalmente”.

Boa Noite douglasmanteiga!
Mano não consegui assimilar o que vc realmente quer! :?: :?: :?: :?: :?: :?: :?:
PQ estou escrevendo isso?Mano no seu post inicial vc queria receber os dados que viriam do banco.

Bom minha duvida é a seguinte
Como faço para somente uma Classe com os metodos get e set pegar os objetos que vem do banco... Exemplo do jeito que estou fazendo se for para
para analisar está errado pois estou criando 4 variaveis...

E por ultimo vc postou uma solução em que vc atribui os valores na mão para suas variaveis e utiliza um arrayList para fazer a apresentação do resultado.

public static void main(String[] args) {  
    UsuarioTest usuario = new UsuarioTest();  
      
    usuario.setId(1);  
    usuario.setNome("Douglas");  
      
    UsuarioTest usuarioA = new UsuarioTest();  
      
    usuarioA.setId(2);  
    usuarioA.setNome("Francisco");  
      
    UsuarioTest usuarioB = new UsuarioTest();  
  
    usuarioB.setId(3);  
    usuarioB.setNome("Manteiga");  
      
    usuario.addSimilar(usuarioA);  
    usuario.addSimilar(usuarioB);  
      
    for(UsuarioTest usu : usuario.getListaUsuario()) {  
        System.out.println(usu.getId());  
        System.out.println(usu.getNome());  
    }  
  
      
}

[/quote]

Bom mano aqui fica a minha duvida,vc queria inserir e recuperar dados do banco ou não?
Pq se for isso vc pode utilizar a apostila da Caelum fj21 e utilizar a parte de JDBC que te mostra-rá,uma forma de inserir e rucuperar dados persistidos no banco.