gpt4 book ai didi

java - 如何在jdbctemplate中使用groupBy进行查询

转载 作者:行者123 更新时间:2023-11-29 13:02:22 28 4
gpt4 key购买 nike

我正在使用 Spring 的 jdbctemplate,我有以下查询:

SELECT ?, count(*) as " + counter + " FROM data GROUP BY ? 

当我使用

List<Map<String, Object>> values = jdbcTemplate.queryForList(sql,columnName, columnName);

我得到一个错误的查询结果 - 我得到一行计数器为 11 - 这是数据表中所有行的计数器。很明显 groupBy 无法正常工作。我调试了代码,看到执行的查询实际上是

SELECT 'COLUMN_3', count(*) as COUNTER FROM DATA GROUP BY 'COLUMN_3'

所以我怀疑额外的撇号是导致错误的原因。

我该如何解决这个问题? (不使用简单的字符串查询 - 我想使用 PreparedStatement 这样我就不会有任何 SQL 注入(inject)问题)。

最佳答案

你用的是sql吗?仅在 Sql PreparedStatements 的 WHERE 子句中占位符,例如WHERE bossesname=?

在您的情况下,将 ?s 替换为 java 变量,如下所示:

String columnName = "COLUMN_3";
String counter = "COUNTER";
SELECT " + columnName + ", count(*) as " + counter + " FROM data GROUP BY " + columnName

然后使用简化形式的queryForList:

List<Map<String, Object>> values = jdbcTemplate.queryForList(sql);

关于java - 如何在jdbctemplate中使用groupBy进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25833833/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com