Ich bin mit Federn jdbctemplate und Ausführen einer Abfrage wie unten abfragen:wie für eine Liste <String> in jdbctemplate
SELECT COLNAME FROM TABLEA GROUP BY COLNAME
Es gibt keine benannten Parameter sind vergangen, jedoch Spaltenname, COLNAME
, wird vom Benutzer übergeben werden.
Fragen
Gibt es eine Möglichkeit Platzhalter zu haben, wie
?
für Spaltennamen? Zum BeispielSELECT ? FROM TABLEA GROUP BY ?
Wenn ich will einfach die obige Abfrage ausführen und ein
List<String>
bekommen, was ist der beste Weg?
Derzeit ich tue:
List <Map<String, Object>> data = getJdbcTemplate().queryForList(query);
for (Map m : data)
System.out.println(m.get("COLNAME"));
In dynamische Abfrage werde ich sein setzen, was der Benutzer in meine dynamische Abfrage eingibt, die ein Teil beängstigend ist. – birdy
@birdy: Sie können überprüfen, ob die Zeichenfolge nur 'Wortzeichen 'enthält, indem Sie eine einfache Regex' \\ w' verwenden. Dies verhindert jegliche SQL-Injektionsmöglichkeit. –
Sie sollten vorbereitete Anweisungen verwenden, anstatt dieses Regex-Zeug zu machen. Versuchen Sie dies: '' 'getJdbcTemplate(). Abfrage (" SELECT? FROM TABLEA GROUP BY? ", Neue RowMapper()) öffentliche String mapRow (ResultSet rs, int rowNum) löst SQLException { zurück rs.getString (1); } }, colName, colName); '' –
Jean