簡體   English   中英

NamedParameterJdbcTemplate查詢方法返回錯誤的整數值

[英]NamedParameterJdbcTemplate query method returning wrong integer value

我正在使用Java中的NamedParameterJdbcTemplate運行一個簡單的mysql查詢。

問題是我的Java查詢返回的是count字段的二進制值,即所有非零值都為1,所有零值 都為0 當我運行與jdbc發送給mysql的相同查詢時,直接在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連接網址為:

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

希望這可以幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM