使っています
- mySQLDBへのJDBC接続を確立するためのjdbcTemplate
- SQLインジェクション攻撃から自分自身を可能な限り保護するためのプリペアドステートメント
- ダースの異なる列のいずれかでデータを並べ替えるユーザーからの要求を受け入れる必要がある
次のステートメント
jdbcTemplate.query("SELECT * FROM TABLE1 ORDER BY ? ?", colName, sortOrder);
もちろん、これは機能しません。変数バインディングは、クエリ内の式のパラメータ値だけで列名を指定することは想定されていないためです。
それで...人々はこの問題をどのように解決していますか?Javaコードで並べ替えを行うだけでも簡単な解決策のように思えますが、列を並べ替えるための変数文字列と、並べ替え順序を示す変数を取得しているので、これは醜い数のコンパレータ条件です。カバー。これは、それを解決するための一般的なパターンの一般的な問題であるはずです...