Używam sprężyny jdbctemplate i uruchomienie kwerendy jak poniżej:jak zapytać o listę <String> w jdbctemplate
SELECT COLNAME FROM TABLEA GROUP BY COLNAME
Brak wymienione parametry są przekazywane jednak nazwę kolumny, COLNAME
, będzie zostać przekazane przez użytkownika.
Pytania
Czy istnieje sposób, aby mieć zastępcze, jak
?
dla nazw kolumn? Na przykład:SELECT ? FROM TABLEA GROUP BY ?
Jeśli chcę po prostu uruchomić powyższe zapytanie i uzyskać
List<String>
jaki jest najlepszy sposób?
Obecnie robię:
List <Map<String, Object>> data = getJdbcTemplate().queryForList(query);
for (Map m : data)
System.out.println(m.get("COLNAME"));
Korzystając dynamiczne zapytanie będę oddanie co użytkownik wprowadza do mojego dynamicznego kwerendy, która jest przerażająca część. – birdy
@birdy: Możesz chcieć sprawdzić, czy ciąg ma tylko "znaki słowne" za pomocą prostego wyrażenia regularnego '\\ w'. Zapobiegnie to możliwej iniekcji sql. –
Powinieneś używać przygotowanych instrukcji zamiast robić to, co chcesz. Wypróbuj to: 'getJdbcTemplate(). Query (" SELECT? FROM TABLEA GROUP BY? ", Nowy RowMapper() { public String mapRow (ResultSet rs, int rowNum) wyrzuca SQLException { return rs.getString (1); } }, colName, colName); '' ' –
Jean