1、需求

我的需求是统计域名以及域名出现的次数。

之前使用springboot jpa都是把数据库中的表跟实体类绑定,创建继承JpaRepository的接口。如下:

@Repository

public interface UrlsRepository extends JpaRepository{

OptionalfindById(Integer id);

}

但是对于这种查询却无法绑定到原有的实体类。那么改怎么解决这种需求呢?

2、解决方法一

使用Object[] 数组接收每一行数据,用List接收查询结果。

repository中的写法

@Query(value = "SELECT domain,sum(visit_count) from Urls GROUP BY domain ORDER BY sum(visit_count) desc", nativeQuery = true)

ListfindDomainAndCount();

注意:@Query的nativeQuery属性值默认是false,表示使用JPQL语言。设为true表示使用本地sql(数据库对应的sql)

测试:

@Test

public void findDomainAndCount() {

Listlist = urlsRepository.findDomainAndCount();

for (Object[] objs : list) {

for (int i = 0; i < objs.length; i++) {

System.out.print(String.valueOf(objs[i]) + ",");

}

System.out.println();

}

}

结果:

3、解决方法二

用一个包装类来接收查询结果。

@Getter

@Setter

@ToString

public class DomainVo {

private String domain;

private Long visitCount;

public DomainVo(String domain, Long visitCount) {

this.domain = domain;

this.visitCount = visitCount;

}

}

repository写法

/*

注意:

1、使用的是全类名

2、查询的表对应的是已经绑定的实体类Urls

3、nativeQuery设为false,表示使用的是jpql语言。

*/

@Query(value = "SELECT new com.ununie.chromehistory.model.vo.DomainVo(u.domain,sum(u.visitCount)) from Urls u GROUP BY u.domain ORDER BY sum(u.visitCount) desc")

ListfindDomainCount();

测试:

@Test

public void findDomainCount() {

ListdomainCount = urlsRepository.findDomainCount();

for (DomainVo vo : domainCount) {

System.out.println(vo);

}

}

结果:

参考:

https://segmentfault.com/q/1010000009070592/a-1020000009071449

https://stackoverflow.com/questions/36328063/how-to-return-a-custom-object-from-a-spring-data-jpa-group-by-query

https://codeday.me/bug/20190313/769224.html

https://www.cnblogs.com/zhangliang88/p/5476340.html

java sql sum函数的使用方法,Springboot jpa使用sum()函数返回结果如何接收相关推荐

  1. 记录---ClassCastException: java.util.Date cannot be cast to java.sql.Date报错解决方法

    记录-ClassCastException: java.util.Date cannot be cast to java.sql.Date报错解决方法 先po代码: //1.读取配置文件中的基本信息I ...

  2. java.sql.SQLException: Protocol violation 解决方法

    本篇承接这一篇 :java.sql.SQLException: Protocol violation 问题解析 问题描述 应用可以正常启动,但是运行一段时间时候偶尔会出现这个错误. java.sql. ...

  3. python中sum函数的使用方法及实例_Python sum()用法及代码示例

    列表中的数字总和在任何地方都是必需的. Python提供了一个内置函数sum(),用于对列表中的数字求和. 用法: sum(iterable, start) iterable: iterable ca ...

  4. 匿名函数的disconnect方法 QTimer如何disconnect匿名函数

    在度娘参阅了各大博客,都没有找的这个问题的解决方案,要么就是解决办法是错误的.最后还是在stackoverflow中找到的.难道就我一个人遇到过这个问题吗... 问题描述 国内博客普遍认为,像以下这种 ...

  5. python中sum函数的使用方法及实例_python求和函数sum()的使用示例

    python求和函数sum()的使用示例 发布时间:2020-11-21 11:59:04 来源:亿速云 阅读:59 作者:小新 小编给大家分享一下python求和函数sum()的使用示例,相信大部分 ...

  6. MySQL插入数据时报错Cause: java.sql.SQLException: #HY000的解决方法

    数据库中有字段要求不能为空,但是insert插入的时候,改字段没有值

  7. java sql 联表查询系统_Spring Hibernate JPA 联表查询 复杂查询(转)

    关系类型Owning-SideInverse-Side one-to-one @OneToOne @OneToOne(mappedBy="othersideName") one-t ...

  8. python字符串函数的find方法_Python string模块 字符串函数方法操作教程

    我们在Python编程过程中,经常会处理一些字符串的相关操作,例如:查找.替换.分隔.截取以及英文的大小写转换等,这个时候Python程序员首选的一定是 string模块 . 一.string模块简单 ...

  9. excel中vlookup函数的使用方法_EXCEL中查找匹配函数VLOOKUP使用技巧

    1.VLOOKUP基础用法 VLOOKUP 函数表示: = VLOOKUP (你想要查找的内容,要查找的位置,包含要返回的值的区域中的列号,返回近似或精确匹配-表示为 1/TRUE 或 0/假). 第 ...

最新文章

  1. mongodb php 支持
  2. tcpdf 设置pdf尺寸_AutoCAD中施工图审查PDF、DWF批量输出并自动命名
  3. 移动端重构系列5——等分,居中等
  4. RvaToFileOffset 内存偏移转成文件偏移(滴水课后作业)
  5. eclipse下查看maven下载的源码中文乱码问题
  6. SSH初体验系列--Hibernate--1--环境配置及demo
  7. 在Linux内核使用Kasan
  8. windows7系统电脑管理员权限的更改方法
  9. mysql5.5查询字段语句_mysql查询同一个字段下,不同内容的语句
  10. JS、Java、C 依然强势,Go、Kotlin、Python 成为潜力股,2020 开发者生态系统报告揭晓!...
  11. mybatis 之 parameterType=list1
  12. 《Node应用程序构建——使用MongoDB和Backbone》一2.3 事件
  13. centos node 进程保护_NodeJs之进程守护
  14. 页面导出excel的三种方式
  15. java 动态给数组赋值_java 中 String 数组怎么动态赋值
  16. java 中文url转码_对 url 中含有的中文进行转码操作
  17. 针式PKM适合对“大量的资料”进行系统性管理
  18. python大鱼吃小鱼程序代码_pygame大鱼吃小鱼源代码
  19. 在ros中使用glog
  20. xmind怎么导出为pdf?Xmind最全入门教程

热门文章

  1. linux shell which 和 whereis 区别
  2. linux curl 命令 http请求、下载文件、ftp上传下载
  3. python3 set 集合 简介
  4. 各种排序算法的JAVA实现
  5. ipconfig的C语言实现
  6. 关于机器学习的领悟与反思
  7. proc文件系统编程
  8. signature=89b7a6bcfac55abae5ac369dafee29f4,Capecitabine
  9. matlab中隐含层缺省函数,Matlab双隐层的BP神经网络该如何创建
  10. android yuv加水印_Android Camera添加预览水印