es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo manejar una búsqueda por un conjunto dinámico de variables en JDBC?

Estoy realizando una consulta dinámica para pasar a MySQL en función de las variables que estoy pasando que no son nulas.

Puedo construir la consulta sin problema, pero no puedo entender cómo trabajar en el grupo correcto de variables.

Por ejemplo, en una situación donde todo lo que paso es nulo, simplemente tendré un “SELECT * FROM mytable“, pero si estoy pasando (nulo, entero, cadena nula, nula) o (flotante, entero, nulo, nulo, nulo), con una consulta como “SELECT * FROM mytable WHERE x=entero AND...“, no estoy seguro de cómo trabajar en la combinación correcta.

Podría abrir un montón de condicionales para cada combinación, pero siento que no sería el movimiento correcto.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Una forma de manejar esta situación es construir dinámicamente la consulta en función de las variables no nulas que se están pasando. Aquí tienes un ejemplo:

    StringBuilder query = new StringBuilder("SELECT * FROM mytable");
    List<object> params = new ArrayList<>();
    
    if (intVar != null) {
        query.append(" WHERE x = ?");
        params.add(intVar);
    }
    if (stringVar != null) {
        if (params.isEmpty()) {
            query.append(" WHERE ");
        } else {
            query.append(" AND ");
        }
        query.append("y = ?");
        params.add(stringVar);
    }
    
    // Ejecutar la consulta con los parámetros
    

    Aquí, comenzamos construyendo una consulta genérica que selecciona todas las filas de la tabla. Luego, para cada variable no nula que queremos usar en la consulta, agregamos una cláusula a la cadena de consulta y agregamos el valor de la variable a una lista de parámetros. Finalmente, ejecutamos la consulta con los parámetros.

    Este enfoque nos permite manejar diferentes combinaciones de variables sin tener que escribir una tonelada de instrucciones if-else. También hace que el código sea más mantenible, ya que podemos agregar o eliminar fácilmente variables de la consulta según sea necesario.

Comments are closed.