博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate 分组查询 子查询 原生SQL
阅读量:6969 次
发布时间:2019-06-27

本文共 1717 字,大约阅读时间需要 5 分钟。

分组查询:

 

使用group by关键字对数据分组,使用having关键字对分组数据设定约束条件,从而完成对数据分组和统计

1.1 聚合函数:常被用来实现数据统计功能

① count() 统计记录条数

② sum() 求和

③ min() 求最小值

④ max() 求最大值

⑤ avg() 求平均值

使用分组查询  查询员工编号的平均值

Session session;    Transaction tx;            @Before    public void initDate(){        session = HibernateUtil.getSession();         tx= session.beginTransaction();    }            @After     public void afterTest(){         tx.commit();         HibernateUtil.closeSession();     }
@Test        public void avgEmpno(){                      Emp emp=new Emp();           Object obj=  session.createQuery("select avg(empNo)from Emp").uniqueResult();           System.out.println(obj);                  }

运行结果

经验:当select语句只是选择查询持久化类的部分属性时,Hibernate返回的查询结果为关系数据,而不是持久化对象,不会占用Session缓存。只要应用程序没有变量引用这些数据,它们占用的内存就会被Java虚拟机(JVM)的垃圾回收器回收。为了方便访问,可以定义一个JavaBean来包装查询结果中的关系数据,使应用程序依旧可以按照面向对象的方式来访问查询结果。

 

子查询:

检索薪资小于5000的员工的部门名称

@Test      public void testChild(){                          List
list = session.createQuery("from Dept d where 5000>all(select e.empNo from d.emps e)").list(); for (Dept dept : list) { System.out.println(dept.getDeptName()); } }

 

 原生sql

 在部门的小配置 Dept.hbm.xml中插入<sql-query>节点

select * from Y2162Dept where deptname=:deptname

测试类中添加如下代码

@Test      public void getDeptInfo(){                    Query query =session.getNamedQuery("getDeptByName");                    query.setParameter("deptname", "开发部");          List
list=query.list(); for (Object[] dept : list) { System.out.println(dept[1].getClass()); } }

转载于:https://www.cnblogs.com/xtdxs/p/6575912.html

你可能感兴趣的文章
[转载]责任链模式
查看>>
揭秘!双11万亿流量下的分布式缓存系统 Tair
查看>>
[译] iPhone X 网页设计
查看>>
webpack入门及踩坑应对指南
查看>>
对于数据库优化的理解
查看>>
python学习三:列表、元组、字典、集合
查看>>
Netty 框架总结「ChannelHandler 及 EventLoop」
查看>>
Linux 下启动 Tomcat 抛出Can't connect to X11 window server 问题的解决方法
查看>>
Hexo博客NexT主题美化之显示当前浏览进度
查看>>
java版b2b2c社交电商spring cloud分布式微服务(七)springboot开启声明式事务
查看>>
品质生活正式开启,欧普照明&华为智选再创智能家居里程碑式突破
查看>>
【本人秃顶程序员】分库分表怎么才能无限扩容,看这篇文章就对了
查看>>
迁移潮来袭!数十个项目宣布即将停止支持 Python 2
查看>>
Javascrip—装饰器(7)
查看>>
Java 11 已发布,String 还能这样玩!
查看>>
(一)java版电子商务spring cloud分布式微服务b2b2c社交电商-服务的注册与发现(Eureka)...
查看>>
使用DataV制作实时销售数据可视化大屏
查看>>
Hello Juejin
查看>>
AndroidStudio导入或者新建项目一直build
查看>>
laravel项目
查看>>