1
SQLでは、文字列連結を使用してパラメータ化されたクエリを作成するのは非常に簡単です。たとえば、私は、この(あなたもあなた自身の例を作ることができる)QueryDSL要求と同じことを行うことができますどのように設定したパラメータ(カラムの名前の文字列に)パラメータを指定したQueryDSLリクエストは可能ですか?
String id_column = "id", city_column = "city", streetname_column ="streetname", housenumber_column = "housenumber"; //Parameters
stmt = c.createStatement();
ResultSet rs = stmt.executeQuery("SELECT "+id_column+","+streetname_column+" FROM address"); //How do the same in QueryDSL?
ResultSetMetaData rsmd = rs.getMetaData();
for (int i = 0; i < rsmd.getColumnCount(); i++){
System.out.print(rsmd.getColumnName(i+1)+" ");
}
while (rs.next()) {
System.out.print("\n");
for (int i = 0; i < rsmd.getColumnCount(); i++){
System.out.print(
rs.getString(rsmd.getColumnName(i+1)) + " "
);
}
}
に従ってDBテーブルから必要な列を取得しています:
List<Address> q1=queryFactory.selectFrom(address)
.fetch();
このクエリでは、テーブル全体を取得しています。
クエリを構築するために文字列を連結するあなたの例は本当に悪いです。 'PreparedStatement'はSQLインジェクションを避けるための方法です。 – Kayaman
@ kayamanとQueryDSLで 'PreparedStatement'を実行できますか? –
あなたはどんなドキュメントも読んでいないように聞こえます。 – Kayaman