Utilisation d'une instruction préparée et d'une variable bind By By en Java avec le pilote JDBC

Je suis en utilisant

  1. jdbcTemplate pour faire les connexions JDBC pour mySQL DB
  2. préparées pour me protéger autant que possible les attaques par injection SQL
  3. dans le besoin d'accepter les demandes de l'utilisateur de trier les données sur une douzaine de colonnes différentes
  4. la déclaration suivante
    jdbcTemplate.query("SELECT * FROM TABLE1 ORDER BY ? ?", colName, sortOrder);

Bien sûr, cela ne fonctionne pas, parce que la variable liaisons ne sont pas censés pour spécifier les noms de colonne juste des valeurs de paramètre pour les expressions de la requête.

Donc...comment sont les gens à résoudre ce problème? Juste faire le tri dans du code Java semble comme une solution facile, mais depuis que je suis une variable chaîne de caractères de la colonne de tri, et une variable de me dire l'ordre de tri....c'est un vilain nombre de comparateur-les conditions de la couverture. Cela semble comme il devrait être un problème commun avec un modèle commun pour le résoudre...

source d'informationauteur Raevik