My favorites | Sign in
Project Logo
                
Search
for
Updated Mar 02, 2009 by fernando.rosado
Labels: Featured, java
SQLUtils  
Useful SQL classes

# Java Utils - SQL

SQL Utils

Clases que he creado como utilidad para trabajar con sentencias SQL

Detalles

Clases Where y OrWhere

Utilidad que permite construir criterios de consultas empleando prepareStament indicando las columnas a emplear y pasándole el elemento para setear el prepare. Con esto nos ahorramos tener que ir contando a mano el numero de elementos que llevamos establecidos y las comprobaciones elementales para excluirlo en caso de que sea null.

Un ejemplo de uso podria ser :

  String select = "SELECT id, login, nombre, apellidos FROM usuarios ";
  String count = "SELECT COUNT(*) FROM usuarios ";
  Where crit = new Where ();
  
  crit.put("nombre", Where.LIKE, ejemplo.getNombre(),true);
  crit.put("apellidos", Where.LIKE, ejemplo.getApellidos(),true);
  crit.put("login", Where.LIKE, ejemplo.getLogin(),true);
  String where = " WHERE "  + crit.getWhere();
  select = select + where;
  count = count + where;
  PreparedStatement stm;
  //Ejecutamos la cuenta
  stm = conex.prepareStatement(count);
  crit.setValues(stm);
  ResultSet rs = stm.executeQuery();
  // Y el select completo.
  stm = conex.prepareStatement(select);
  crit.setValues(stm);
  rs = stm.executeQuery();
  

Con este ejemplo creamos dos consultas SQL, el where se construye una sola vez ignorando los valores "null" y se establecen el el prepareStatement sin que se nos olvide ningun valor.

La clase Where emplea criterios de condicion "AND" de forma que cada elemento incluido se construye concatenando AND :

criterio AND criterio AND criterio

Podemos concatenar condiciones AND y OR usando la clase OrWhere:

  OrWhere or = new OrWhere();
  or.put("nombre", Where.LIKE, "PACO");
  or.put("apellidos", Where.LIKE, "PACO");
  Where and = new Where ();
  and.put ("edad",Where.GT,18);
  and.put (or);

Construimos una consulta de tipo :

  where edad > 18 and (nombre like "%paco%" or apellidos like "%paco%")

Sign in to add a comment
Hosted by Google Code