首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

SQL GROUP BY 統計結果用什麼集合接收:List 實戰

     編輯:程式設計疑難解答

查詢示例


SELECT user_identity, COUNT(user_identity) AS cnt FROM data_user GROUP BY user_identity

返回每行兩列:user_identity (String), cnt (Long/BigInteger)。

推薦接收結構


List list = entityManager.createNativeQuery(sql).getResultList();
// 或 JdbcTemplate
List list = jdbcTemplate.query(sql, (rs, rowNum) -> new Object[]{rs.getString(1), rs.getLong(2)});

取值方式


for (Object[] row : list) {
    String identity = (String) row[0];
    Long count = (Long) row[1];  // 或 BigInteger, 視數據庫驅動
    System.out.println(identity + " : " + count);
}

為什麼不用 List 或 實體類?

  • List:鍵值對開銷大,key 為字符串常量易寫錯,無類型安全。
  • 實體類:需專門寫 DTO,且無法直接映射聚合列(除非用 @SqlResultSetMapping)。
  • Object[]:輕量、順序對應 SELECT 列、零依賴、性能最優。

進階:封裝為 Record (Java 16+)


record IdentityCount(String identity, long count) {}
List list = jdbcTemplate.query(sql, (rs, rn) -> new IdentityCount(rs.getString(1), rs.getLong(2)));

Record 提供不可變、自帶 toString/equals、模式匹配友好,強烈推薦現代 Java 項目使用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved