Filtrar uma lista conforme parametros

Galera tenho o seguinte codigo:


public List<Usuario> getListaAtualiza(int id) throws SQLException{

        String sql = "select * from usuario where id_usuario = ?";
        try {
            PreparedStatement stmt = this.connection.prepareStatement(sql);
            ResultSet rs = stmt.executeQuery();
            List<Usuario> usuarios = new ArrayList<Usuario>();
            while (rs.next()) {
                Usuario usuario = new Usuario();

                usuario.setId_usuario(rs.getInt("id_usuario"));
                usuario.setNm_usuario(rs.getString("nm_usuario"));
                usuario.setLg_usuario(rs.getString("lg_usuario"));
                usuario.setSh_usuario(rs.getString("sh_usuario"));
                usuario.setId_tipo_usuario(rs.getInt("id_tipo_usuario"));

                usuarios.add(usuario);
            }
            rs.close();
            stmt.close();

            return usuarios;

        } catch (SQLException ex) {
           ex.printStackTrace();
        }
        return null;

    }

A minha duvida é a seguinte, estou tentando retornar o resultado dessa lista conforme o Id que eu passar, mais não esta dando certo dessa forma, alguem poderia me dar uma luz de como eu possa estar resolvendo isso, eu pego o Id de um (request.getParameter(“idUsuario”)).

E aproveitando, eu tambem gostaria de saber como eu faria para retornar uma lista no caso de um join entre duas tabelas, como eu poderia estar retornando uma lista com esses resultados.

Por ora é só, espero não ter pedido demais… Obrigado.

[quote=davisnog]Galera tenho o seguinte codigo:


public List<Usuario> getListaAtualiza(int id) throws SQLException{

        String sql = "select * from usuario where id_usuario = ?";
        try {
            PreparedStatement stmt = this.connection.prepareStatement(sql);
            ResultSet rs = stmt.executeQuery();
            List<Usuario> usuarios = new ArrayList<Usuario>();
            while (rs.next()) {
                Usuario usuario = new Usuario();

                usuario.setId_usuario(rs.getInt("id_usuario"));
                usuario.setNm_usuario(rs.getString("nm_usuario"));
                usuario.setLg_usuario(rs.getString("lg_usuario"));
                usuario.setSh_usuario(rs.getString("sh_usuario"));
                usuario.setId_tipo_usuario(rs.getInt("id_tipo_usuario"));

                usuarios.add(usuario);
            }
            rs.close();
            stmt.close();

            return usuarios;

        } catch (SQLException ex) {
           ex.printStackTrace();
        }
        return null;

    }

A minha duvida é a seguinte, estou tentando retornar o resultado dessa lista conforme o Id que eu passar, mais não esta dando certo dessa forma, alguem poderia me dar uma luz de como eu possa estar resolvendo isso, eu pego o Id de um (request.getParameter(“idUsuario”)).

E aproveitando, eu tambem gostaria de saber como eu faria para retornar uma lista no caso de um join entre duas tabelas, como eu poderia estar retornando uma lista com esses resultados.

Por ora é só, espero não ter pedido demais… Obrigado.[/quote]

Amigo,

nao sei se eu nao to vendo isso, mas onde vc está setando o parametro que vc colocou ( no caso o id_usuario = ? ) ?
Pq, se vc nao setar o parametro, eu nao sei se ele da erro, mas poderia dar erro ou retornar todos os registros da tabela (muito tempo sem usar JDBC, to usando Hibernate).

Outra coisa, nesse caso, vc nao deveria estar retornando apenas 1 registro e nao uma lista? sendo que id_usuario é um campo unico, certo?

Bom, quanto ao join, a principio, vc pode fazer a mesma coisa, ou seja, dar um join de usuário com outra tabela. A unica coisa que mudaria nesse seu codigo, com o join, seria a prorpia SQL, mais nada.

Opa… desculpe a demora pela resposta… mais eu consegui assim… baison quando você perguntou aonde eu estava setando o o parâmetro id, me ajudou mesmo, pq eu estava esquecendo disso.
Mais o resultado final e funcionando ficou assim.


 public ArrayList<Usuario> getUsuarioPorId(Usuario listaPorId) throws SQLException {

        String sql = "SELECT * FROM usuario WHERE id_usuario = ?";
        try {
        
            PreparedStatement stmt = this.connection.prepareStatement(sql);
            stmt.setInt(1, listaPorId.getId_usuario());
            ResultSet rs = stmt.executeQuery();
            ArrayList<Usuario> usuarios = new ArrayList<Usuario>();
            
            while (rs.next()) {
                
                listaPorId = new Usuario();

                listaPorId.setId_usuario(rs.getInt("id_usuario"));
                listaPorId.setNm_usuario(rs.getString("nm_usuario"));
                listaPorId.setLg_usuario(rs.getString("lg_usuario"));
                listaPorId.setSh_usuario(rs.getString("sh_usuario"));
                listaPorId.setId_tipo_usuario(rs.getInt("id_tipo_usuario"));

                usuarios.add(listaPorId);
            }
            

            rs.close();
            stmt.close();
            
            return usuarios;

        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        return null;

    }

Blz então kra…

Q bom que tu resolveu aí… que bom que eu pude ajudar…

Abraços.

Olá pessoal, estou com um problema parecido…
Estou tentando desenvolver um questionário de perguntas e respostas. Estou usando hibernate.

Estou tentando criar um filtro na minha lista de respostas. Esse filtro deve fazer com que me mostre apenas as respostas referentes àquela pergunta com id x.

Na minha classe, está assim:

[code]public class QuestionarioHandler {

private Questionario questionario = new Questionario();

public Questionario getQuestionario() {
	return questionario;
}

private HtmlSelectOneMenu orgaogestorSelecionado;

public HtmlSelectOneMenu getorgaogestorSelecionado() {
	return orgaogestorSelecionado;
}

public void setorgaogestorSelecionado(
		HtmlSelectOneMenu orgaogestorSelecionado) {
	this.orgaogestorSelecionado = orgaogestorSelecionado;
}

private HtmlSelectManyCheckbox respostaSelecionado;

public HtmlSelectManyCheckbox getrespostaSelecionado() {
	return respostaSelecionado;
}

public void setrespostaSelecionado(
		HtmlSelectManyCheckbox respostaSelecionado) {
	this.respostaSelecionado = respostaSelecionado;
}

public List<Questionario> getListaQuestionario() {
	System.out.println("Carregando a lista de questionario ...");
	Session session = HibernateUtil.currentSession();
	Dao<Questionario> dao = new Dao<Questionario>(session,
			Questionario.class);
	return dao.list();
}


private OrgaoGestorHandler pegaOrgaoGestorHandler() {
	FacesContext facesContext = FacesContext.getCurrentInstance();
	ELContext elContext = facesContext.getELContext();
	ELResolver resolver = facesContext.getApplication().getELResolver();
	Object og = resolver.getValue(elContext, null, "orgaogestorHandler");

	return (OrgaoGestorHandler) og;
}

public List<SelectItem> getOrgaoGestorParaComboBox() {
	List<SelectItem> lista = new ArrayList<SelectItem>();


	OrgaoGestorHandler handler = pegaOrgaoGestorHandler();
	for (OrgaoGestor og : handler.getOrgaosGestores()) {
		lista.add(new SelectItem(og.getCod_orgaogestor(), og.getNome()));
	}
	return lista;
}


private RespostasHandler pegaRespostasHandler() {
	FacesContext facesContext = FacesContext.getCurrentInstance();
	ELContext elContext = facesContext.getELContext();
	ELResolver resolver = facesContext.getApplication().getELResolver();
	Object r = resolver.getValue(elContext, null, "respostasHandler");

	return (RespostasHandler) r;
}

public List<SelectItem> getRespostasEspecificas() { //aqui está minha dúvida: como eu faço pra que me apareçam apenas as respostas referentes a pergunta com id x??
	List<SelectItem> lista = new ArrayList<SelectItem>();


	RespostasHandler handler = pegaRespostasHandler();
	for (Respostas r : handler.getListaRespostas()) {
		lista.add(new SelectItem(r.getCod_respostas(), r.getDescricao()));
	}
	return lista;
}

public String salva() {
	System.out
			.println("Adicionando: " + questionario.getCod_questionario());
	Session session = HibernateUtil.currentSession();
	Dao<Questionario> dao = new Dao<Questionario>(session,
			Questionario.class);
	Dao<OrgaoGestor> ogDao = new Dao<OrgaoGestor>(session,
			OrgaoGestor.class);
	Dao<Respostas> respostasDao = new Dao<Respostas>(session,
			Respostas.class);

	// orgaogestor
	Long id_orgaogestor = Long.valueOf(orgaogestorSelecionado.getValue()
			.toString());
	OrgaoGestor og = ogDao.load(id_orgaogestor);
	questionario.setOrgaogestor_cod_orgaogestor(id_orgaogestor);
	// respostas
	Long id_respostas = Long.valueOf(respostaSelecionado.getValue()
			.toString());
	Respostas r = respostasDao.load(id_respostas);
	questionario.setRespostas_cod_respostas(id_respostas);

	dao.merge(this.questionario);
	dao.delete(this.questionario);
	this.questionario = new Questionario();
	return "sucesso";
}

public String excluir(ActionEvent event) {
	System.out.println("Excluindo: " + questionario.getCod_questionario());
	UIComponent link = event.getComponent();
	UIParameter param = (UIParameter) link.findComponent("excluir");
	Long id = (Long) param.getValue();

	Session session = HibernateUtil.currentSession();
	Dao<Questionario> questionarioDao = new Dao<Questionario>(session,
			Questionario.class);
	this.questionario = questionarioDao.load(id);
	questionarioDao.delete(this.questionario);
	this.questionario = new Questionario();
	return "excluido";

}

public void escolheQuestionario(ActionEvent event) {
	UIComponent link = event.getComponent();
	UIParameter param = (UIParameter) link.findComponent("editCod");
	Long id = (Long) param.getValue();

	Session session = HibernateUtil.currentSession();
	Dao<Questionario> dao = new Dao<Questionario>(session,
			Questionario.class);
	this.questionario = dao.load(id);
}

public void validaCase(FacesContext fc, UIComponent component, Object value) {
	String valor = value.toString();
	if (!valor.matches("[A-Z].*")) {
		throw new ValidatorException(new FacesMessage(
				"Inicie o nome com letra maiúscula!"));
	}
}

}[/code]

Agradeço qualquer ajuda pessoal…