JDBC: Cómo lidiar con comodines en Java PreparedStatement

Por ejemplo si tengo:

connection.prepareStatement("SELECT * FROM users 
                                   WHERE status=? AND otherAttribute=?");

Donde en algunos casos podría querer un estado específico y en otros quiero todos los estados. ¿Cómo puedo hacer básicamente algo como:

preparedStatement.setInt(1, mySpecificRequestedStatus);

y en otros casos:

preparedStatement.setInt(1, allStatuses); // wildcard

Para que no tenga que tener múltiples PreparedStatements, especialmente para cláusulas WHERE más complejas en las instrucciones SELECT donde las permutaciones pueden ser más altas.

Respuesta 1

No tienes otra opción, tienes que elegir una u otra como sospeché y pregunté originalmente.

Tu también puedes:

  1. Cree una declaración compleja preparada con cláusulas if
  2. Cree una declaración SQL compleja que no tenga el mejor rendimiento

Realmente no hay una buena solución para esto. Es por eso que existen ORM, para resumir esto. El problema es que ORM introduce otros problemas / complejidades a cambio de simplificar otras cosas.

Respuesta: 2

Tengo una barra de pestañas con 5 elementos, 4 de estos abren un nuevo fragmento, mientras que 1 de ellos debería abrir una nueva actividad, no puedo entender cómo abrir esta nueva actividad. Necesito el tercer elemento para abrir una nueva actividad (...

Estoy desarrollando una aplicación Java, que llama a un PHP desde internet que me da una respuesta XML. En la respuesta está contenida esta palabra: "Próximo", pero cuando analizo los nodos del XML y obtengo el ...

Quiero probar la capa http para una aplicación de descanso de arranque de primavera. Para esto se burló el servicio para responder las llamadas del controlador. Como tengo muchos métodos (por ejemplo, findBy ...) que esperan una lista para ...

Me gustaría cómo puedo incluir el resultado decimal del método de baile al claro. Por ejemplo, en este programa, si ingreso 5F, el resultado decimal sería 95. Bueno, quiero que 95 aparezca como ...