Java 如何查询列表<;字符串>;在JdbcTemplate中?
我正在使用Spring的Java 如何查询列表<;字符串>;在JdbcTemplate中?,java,jdbc,jdbctemplate,spring-jdbc,Java,Jdbc,Jdbctemplate,Spring Jdbc,我正在使用Spring的JdbcTemplate,并运行如下查询: SELECT COLNAME FROM TABLEA GROUP BY COLNAME 没有传递任何命名参数,但是,用户将传递列名COLNAME 问题 是否有一种方法可以使用占位符,例如列名的??例如SELECT?从表格A分组依据? 如果我只想运行上面的查询并获得一个列表最好的方法是什么 目前我正在做: List<Map<String, Object>> data = getJdbcTemplate
JdbcTemplate
,并运行如下查询:
SELECT COLNAME FROM TABLEA GROUP BY COLNAME
没有传递任何命名参数,但是,用户将传递列名COLNAME
问题
?
?例如SELECT?从表格A分组依据?
列表
最好的方法是什么
List<Map<String, Object>> data = getJdbcTemplate().queryForList(query);
for (Map m : data) {
System.out.println(m.get("COLNAME"));
}
List data=getJdbcTemplate().queryForList(查询);
用于(地图m:数据){
System.out.println(m.get(“COLNAME”);
}
有没有一种方法可以设置占位符,比如?关于列名?例如选择?来自TABLEA GROUP BY
使用动态查询,如下所示:
String queryString = "SELECT "+ colName+ " FROM TABLEA GROUP BY "+ colName;
如果我只想运行上面的查询并得到一个列表,那么最好的方法是什么
不能将占位符用于列名、表名、数据类型名或任何基本上不是数据的内容。请使用以下代码
List data=getJdbcTemplate().queryForList(query,String.class)
要填充字符串列表,无需使用自定义行映射器。使用queryForList
实现它
List<String>data=jdbcTemplate.queryForList(query,String.class)
Listdata=jdbcTemplate.queryForList(query,String.class)
在使用动态查询时,我将把用户输入的任何内容放入我的动态查询中,这是一个可怕的部分。@birdy:您可能想使用一个简单的正则表达式\\w
检查字符串是否只有字字符。这将阻止任何sql注入的可能性。您应该使用准备好的语句,而不是使用正则表达式。尝试以下操作:getJdbcTemplate().query(“从表中选择?”,new RowMapper(){public String mapRow(ResultSet rs,int rowNum)抛出SQLException{return rs.getString(1);}},colName,colName)代码>如果有多个参数,我们将如何映射行。。即。。在使用lambda替换columnname时,可以使用以下内容:List data=getJdbcTemplate().query(query,(rs,rowNum)->rs.getString(1));这很好用。接下来,如果查询具有IN运算符,我如何将值传递给此?请协助!这些值在“In”运算符中列出
Pattern pattern = Pattern.compile("\\W");
if(pattern.matcher(str).find()){
//throw exception as invalid column name
}
List<String>data=jdbcTemplate.queryForList(query,String.class)