O interessante é ter um método (findByName, findByCode, e findsByWhatever) pra cada ‘tipo’ de busca. Ou ainda, você pode ter algo mais genérico, passando o nome do atributo (nome, por exemplo), e o valor (john, por exemplo):
Se você usar um framework ORM fica um pouco mais fácil (você pode usar JPQL e reflection juntos em alguns casos), ainda mais com a JPA 2.0 que saiu recentemente.
neto.fiamenghi
Andre Brito:
O interessante é ter um método (findByName, findByCode, e findsByWhatever) pra cada ‘tipo’ de busca. Ou ainda, você pode ter algo mais genérico, passando o nome do atributo (nome, por exemplo), e o valor (john, por exemplo):
Se você usar um framework ORM fica um pouco mais fácil (você pode usar JPQL e reflection juntos em alguns casos), ainda mais com a JPA 2.0 que saiu recentemente.
Andre sou novo em java e estou apanhando um pouco, veja se o meu código ficou correto:
publicList<Cliente>findByName(Stringclinome)throwsSQLException{Stringsql="select * from cliente where clinome = "+clinome;PreparedStatementstmt=this.connection.prepareStatement(sql);ResultSetrs=stmt.executeQuery();List<Cliente>clientes=newArrayList<Cliente>();while(rs.next()){//criando o objeto ClienteClientecliente=newCliente();cliente.setCliid(rs.getInt("cliid"));cliente.setClinome(rs.getString("clinome"));cliente.setCliapelido(rs.getString("cliapelido"));cliente.setClirgie(rs.getString("clirgie"));cliente.setClicnpjcpf(rs.getString("clicnpjcpf"));// adicionando o objeto a listaclientes.add(cliente);}rs.close();stmt.close();returnclientes;}
deve ter algum erro pois não consigo listar passando o valor do jtextfield
V
vdb
E ai cara…
Faça assim
Stringsql="select * from cliente where clinome like ?";PreparedStatementstmt=this.connection.prepareStatement(sql);stmt.setString(1,clinome+"%");ResultSetrs=stmt.executeQuery();
Não esqueça que o valor para parametro do sql é case sensitive. Para evitar problemas costumo utilizar “select * from cliente where upper(clinome) like upper(?)”;
não sei se em todos os bancos funciona.
neto.fiamenghi
vdb:
E ai cara…
Faça assim
Stringsql="select * from cliente where clinome like ?";PreparedStatementstmt=this.connection.prepareStatement(sql);stmt.setString(1,clinome+"%");ResultSetrs=stmt.executeQuery();
Não esqueça que o valor para parametro do sql é case sensitive. Para evitar problemas costumo utilizar “select * from cliente where upper(clinome) like upper(?)”;
não sei se em todos os bancos funciona.