bir*_*rdy 25 java jdbc spring-jdbc jdbctemplate
我正在使用spring jdbctemplate并运行如下查询:
SELECT COLNAME FROM TABLEA GROUP BY COLNAME
没有传递任何命名参数,但是,列名称COLNAME将由用户传递.
问题
有没有办法让占位符,比如?列名?例如SELECT ? FROM TABLEA GROUP BY ?
如果我想简单地运行上面的查询并得到一个List<String>最好的方法?
目前我在做:
List <Map<String, Object>> data = getJdbcTemplate().queryForList(query);
for (Map m : data)
System.out.println(m.get("COLNAME"));
Run Code Online (Sandbox Code Playgroud)
小智 67
要填充String列表,您不需要使用自定义行映射器.使用实现它queryForList.
List<String>data=jdbcTemplate.queryForList(query,String.class)
Run Code Online (Sandbox Code Playgroud)
Yog*_*ngh 14
有没有办法让占位符,比如?列名?例如SELECT?FROM TABLEA GROUP BY?
使用动态查询如下:
String queryString = "SELECT "+ colName+ " FROM TABLEA GROUP BY "+ colName;
Run Code Online (Sandbox Code Playgroud)
如果我想简单地运行上面的查询并获得List最好的方法是什么?
List<String> data = getJdbcTemplate().query(query, new RowMapper<String>(){
public String mapRow(ResultSet rs, int rowNum)
throws SQLException {
return rs.getString(1);
}
});
Run Code Online (Sandbox Code Playgroud)
编辑:要停止SQL注入,请检查colName中的非单词字符:
Pattern pattern = Pattern.compile("\\W");
if(pattern.matcher(str).find()){
//throw exception as invalid column name
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
78508 次 |
| 最近记录: |