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):
public List<Clients> findClientsByValue(String attribute, String value) { ... }
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.
[quote=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):
public List<Clients> findClientsByValue(String attribute, String value) { ... }
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.[/quote]
Andre sou novo em java e estou apanhando um pouco, veja se o meu código ficou correto:
public List<Cliente> findByName(String clinome) throws SQLException{
String sql = "select * from cliente where clinome = " + clinome;
PreparedStatement stmt = this.connection.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
List<Cliente> clientes = new ArrayList<Cliente>();
while (rs.next()){
//criando o objeto Cliente
Cliente cliente = new Cliente();
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 lista
clientes.add(cliente);
}
rs.close();
stmt.close();
return clientes;
}
deve ter algum erro pois não consigo listar passando o valor do jtextfield
String sql = "select * from cliente where clinome like ?";
PreparedStatement stmt = this.connection.prepareStatement(sql);
stmt.setString(1,clinome+"%");
ResultSet rs = 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.
String sql = "select * from cliente where clinome like ?";
PreparedStatement stmt = this.connection.prepareStatement(sql);
stmt.setString(1,clinome+"%");
ResultSet rs = 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.[/quote]