Verwenden einer vorbereiteten Anweisung und einer Variablenbindung Order By in Java mit dem JDBC-Treiber

Ich benutze

jdbcTemplate zum Herstellen von JDBC-Verbindungen zu einer mySQL-Datenbankbereitete Anweisungen vor, um mich so weit wie möglich vor SQL-Injection-Angriffen zu schützenSie müssen Anforderungen des Benutzers akzeptieren, um die Daten nach einem Dutzend verschiedener Spalten zu sortieren

die folgende Aussage

jdbcTemplate.query("SELECT * FROM TABLE1 ORDER BY ? ?", colName, sortOrder);

Dies funktioniert natürlich nicht, da die Variablenbindungen keine Spaltennamen angeben sollen, sondern nur Parameterwerte für Ausdrücke in der Abfrage.

Also ... wie lösen die Leute dieses Problem? Nur die Sortierung in Java-Code zu machen, scheint eine einfache Lösung zu sein, aber da ich eine variable Zeichenfolge für die zu sortierende Spalte und eine Variable bekomme, die mir die Sortierreihenfolge angibt, ist das eine hässliche Anzahl von Komparatorbedingungen Abdeckung. Dies scheint ein häufiges Problem mit einem gemeinsamen Muster zu sein, um es zu lösen ...

Antworten auf die Frage(3)

Ihre Antwort auf die Frage