gpt4 book ai didi

java - NamedParameterJdbcTemplate 查询方法返回错误的整数值

转载 作者:行者123 更新时间:2023-11-30 21:50:37 26 4
gpt4 key购买 nike

我正在使用 Java 中的 NamedParameterJdbcTemplate 运行一个简单的 mysql 查询。

问题是我的 java 查询正在为 count 字段返回二进制值,即 1 代表所有非零值0 代表所有零值 。当我直接在 mysql 服务器上运行 jdbc 发送到 mysql 的相同查询时,我得到了正确的答案。

详情如下:

这里是查询:

SELECT CAST(COUNT(DISTINCT :fieldName) AS UNSIGNED) count, user_id userId FROM "+ tableName + " WHERE user_id IN (:userIdList) GROUP BY userId

执行查询的 java LOC:

NamedParameterJdbcTemplate namedJdbcTemplate = new   NamedParameterJdbcTemplate(getJdbcTemplate().getDataSource());

List<CountRow> countRows = namedJdbcTemplate.query(query,parameters,new CountRowMapper());

countRow 类是:

public class CountRow {
private int count;
private String userId;

public CountRow() {
super();
// TODO Auto-generated constructor stub
}

public void setUserId(String userId) {
this.userId = userId;
}
public void setCount(int count) {
this.count = count;
}

public int getCount() {
return count;
}

public String getUserId() {
return userId;
}

我正在查询的列的详细信息:

  `user_id` varchar(30) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
`fieldName` varchar(15) DEFAULT NULL,
ENGINE=MyISAM DEFAULT CHARSET=latin1

最后,我的jdbc连接url是:

jdbc:mysql://127.0.0.1/mydb?zeroDateTimeBehavior=convertToNull&amp;useSSL=false&amp;autoReconnect=true&amp;useUnicode=yes&amp;characterEncoding=UTF8&amp;characterSetResults=UTF8

我完全不知道为什么会这样。如果有人能阐明这一点,那就太好了。

谢谢

最佳答案

我认为您不能以这种方式使用参数 :fieldName。尝试像使用 tablename

那样使用连接构建 sql 查询
"SELECT COUNT(DISTINCT " + fieldName + ") count, user_id userId 
FROM "+ tableName + " WHERE user_id IN (:userIdList) GROUP BY userId

希望对你有帮助

关于java - NamedParameterJdbcTemplate 查询方法返回错误的整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47471763/

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