SlideShare a Scribd company logo
Hibernate 框架

      HQL 查询 -2
对象导航查询
  对象导航查询 : 在 HQL 中采用 . 进行导航

        如:        from Student as s where s.classes.className like ?

        代码获取:
          Query query = session.createQuery(hql);
          // 返回结果集属性列表 , 姓名的集合
          List stuList = query.setParameter(0, "%T0506%") .list();
          for(Iterator iterator = stuList.iterator();iterator.hasNext();)
          {
               Student stu = (Student)iterator.next();
         System.out.println("stu.classid = "+ stu.getClasses().getClassId());
               System.out.println("stu.className = "+

         stu.getClasses().getClassName());
              System.out.println("stu.name = "+ stu.getStuName());
           }

www.sodi.com.cn
操作演示




                  操作演示




www.sodi.com.cn
原生 SQL 查询
  HQL 也支持直接使用 sql 进行查询 :
         如:       select * from tab_student      -- SQL 语句对于 HQL 是不认
           可的

         // 创建普通 SQL 语句 , 注意表名和列名
         String sql = "select stu_id,stu_name from tab_student where
            stu_name like '% 周 %'";
         Query query = session.createSQLQuery(sql);
         // 返回结果集属性列表 , 姓名的集合
         List stuList = query.list();
         for(Iterator iterator = stuList.iterator();iterator.hasNext();) {
            // 查询结果为对象数组集合
            Object obj[] = (Object[])iterator.next();
            System.out.println("stu.id = "+ obj[0]);
            System.out.println("stu.name = "+ obj[1]);
         }
         System.out.println(" 共有学生: "+stuList.size());
www.sodi.com.cn
操作演示




                  操作演示




www.sodi.com.cn
连接 (join) 查询
  我们也可以为相关联的实体甚至是对一个集合中的全部
   元素指定一个别名 , 这时要使用关键字 join 。

  连接类型:
      inner join (内连接)
      left outer join (左外连接)
      right outer join (右外连接)


     注:语句 inner join, left outer join 以及 right outer join 可以简写
      。




www.sodi.com.cn
连接 (join) 查询

        // 内连接
        String hql = "select s.stuName,c.className from Student as s join
           s.classes as c";
        String hql = "select s.stuName,c.className from Student as s inner
           join s.classes as c";

        // 左外连接
        String hql = "select s.stuName,c.className from Student as s left
           join s.classes as c";
        String hql = "select s.stuName,c.className from Student as s left
           outer join s.classes as c";

        // 右外连接
        String hql = "select s.stuName,c.className from Student as s right
           join s.classes as c";
        String hql = "select s.stuName,c.className from Student as s right
           outer join s.classes as c";


www.sodi.com.cn
操作演示




                  操作演示




www.sodi.com.cn
聚集函数查询
  HQL 查询可以返回作用于属性之上的聚集函数的计算结
   果
  支持的聚集函数如下:
        avg(...)
        sum(...)
        min(...)
        max(...)
        count(…)




www.sodi.com.cn
聚集函数查询

        String hql = "select count(*) from Student s";

        String hql = "select max(s.stuAge),min(s.stuAge),avg(s.stuAge)
         from Student as s";

        以上查询结果返回单一值,所以可以使用

          session.createQuery(hql).uniqueResult()



        // 统计每个班级的人数
        String hql = "select c.className,count(*) from Student as s inner
           join s.classes as c group by c.className";




www.sodi.com.cn
操作演示




                  操作演示




www.sodi.com.cn
分页查询


            setFirstResult()            从 0 开始
            setMaxResults()             每页显示多少条数据

                  例如:
                   String hql = "from Student as s order by s.stuId asc";
                       List list = session.createQuery(hql)
                                           .setFirstResult(0)
                                           .setMaxResults(5)
                                           .list();




www.sodi.com.cn
操作演示




                  操作演示




www.sodi.com.cn
总结

      对象导航查询
      原生 SQL 查询
      连接查询
      聚合统计查询
      分页查询




www.sodi.com.cn
www.sodi.com.cn

More Related Content

PPT
14 hibernate hql查询1
PPT
第十期 阿甘Javascript开发思想(入门篇)
PPT
JQuery Plugin
PDF
由一个简单的程序谈起――之五(精华)
PPS
Hadoop基础及hive入门
PPT
PHP
PDF
程式人雜誌 -- 2014 年11月號
DOC
Java 操作 Excel (读)
14 hibernate hql查询1
第十期 阿甘Javascript开发思想(入门篇)
JQuery Plugin
由一个简单的程序谈起――之五(精华)
Hadoop基础及hive入门
PHP
程式人雜誌 -- 2014 年11月號
Java 操作 Excel (读)

Viewers also liked (10)

PDF
VG og unge brukere
PPT
12 hibernate 集合映射
PPT
3 hibernate映射元素和类型
PDF
Kommune + unge + sosiale medier = sant
PPT
7 hibernate最佳实践
PPTX
youth civic engagement in social media
PPT
9 hibernate 一对多关系映射
PPT
10 hibernate 多对多关系映射
PDF
Plan - innovative måter å møte unge på
PPT
16 hibernate criteria查询
VG og unge brukere
12 hibernate 集合映射
3 hibernate映射元素和类型
Kommune + unge + sosiale medier = sant
7 hibernate最佳实践
youth civic engagement in social media
9 hibernate 一对多关系映射
10 hibernate 多对多关系映射
Plan - innovative måter å møte unge på
16 hibernate criteria查询
Ad

Similar to 15 hibernate hql查询2 (9)

PPT
Hibernate查询
PPT
Sql语句的优化
PPTX
sql language and programming- single table query
PPT
第6章 数据查询
PPT
Something about oracle joins
PDF
Row Set初步学习V1.1
PPT
Hibernate 映射配置文件详解
PDF
Sql培训 (1)
PPTX
Sql语句编写优化和基本原理总结
Hibernate查询
Sql语句的优化
sql language and programming- single table query
第6章 数据查询
Something about oracle joins
Row Set初步学习V1.1
Hibernate 映射配置文件详解
Sql培训 (1)
Sql语句编写优化和基本原理总结
Ad

More from Zelin Wang (7)

PPT
13 hibernate 继承映射
PPT
11 hibernate 组件映射
PPT
6 事务和并发控制
PPT
4 hibernate对象管理和缓存结构
PPT
2 hibernate核心api
PPT
8 hibernate 一对一关系映射
DOCX
01 orm概述及持久化介绍
13 hibernate 继承映射
11 hibernate 组件映射
6 事务和并发控制
4 hibernate对象管理和缓存结构
2 hibernate核心api
8 hibernate 一对一关系映射
01 orm概述及持久化介绍

Recently uploaded (20)

PPTX
ONU and OLT from Baudcom Jenny training PPT
PPTX
3分钟读懂圣安德鲁斯大学毕业证StAnd毕业证学历认证
DOC
ATU毕业证学历认证,伍赛斯特大学毕业证毕业证书样本
PPTX
3分钟读懂滑铁卢大学毕业证Waterloo毕业证学历认证
PPTX
3分钟读懂伦敦商学院毕业证LBS毕业证学历认证
PPTX
3分钟读懂曼彻斯特大学毕业证UoM毕业证学历认证
PPTX
3分钟读懂圭尔夫大学毕业证U of G毕业证学历认证
PPTX
学校原版克莱姆森大学毕业证Clemson毕业证原版一比一
PPTX
3分钟读懂福特汉姆大学毕业证Fordham毕业证学历认证
PPTX
3分钟读懂贵湖大学毕业证U of G毕业证学历认证
PPTX
模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板
PPTX
3分钟读懂纽曼大学毕业证Newman毕业证学历认证
PPTX
学校原版明尼苏达大学毕业证UMN毕业证原版一比一
PDF
黑客技术,安全提分不是梦!我们采用最新的数据破解和隐藏技术,精准定位并修改你的成绩,同时采用深度隐藏技术确保你的操作不被发现。价格实惠,流程快速,事后无痕...
PPTX
3分钟读懂贝尔法斯特女王大学毕业证QUB毕业证学历认证
PPTX
学校原版杜克大学毕业证Duke毕业证原版一比一
PPTX
学校原版加利福尼亚大学戴维斯分校毕业证UCD毕业证原版一比一
PPTX
3分钟读懂佩珀代因大学毕业证Pepperdine毕业证学历认证
PPTX
3分钟读懂索尔福德大学毕业证Salford毕业证学历认证
PDF
01_Course_Introduction(20210916課後更新).pdf
ONU and OLT from Baudcom Jenny training PPT
3分钟读懂圣安德鲁斯大学毕业证StAnd毕业证学历认证
ATU毕业证学历认证,伍赛斯特大学毕业证毕业证书样本
3分钟读懂滑铁卢大学毕业证Waterloo毕业证学历认证
3分钟读懂伦敦商学院毕业证LBS毕业证学历认证
3分钟读懂曼彻斯特大学毕业证UoM毕业证学历认证
3分钟读懂圭尔夫大学毕业证U of G毕业证学历认证
学校原版克莱姆森大学毕业证Clemson毕业证原版一比一
3分钟读懂福特汉姆大学毕业证Fordham毕业证学历认证
3分钟读懂贵湖大学毕业证U of G毕业证学历认证
模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板
3分钟读懂纽曼大学毕业证Newman毕业证学历认证
学校原版明尼苏达大学毕业证UMN毕业证原版一比一
黑客技术,安全提分不是梦!我们采用最新的数据破解和隐藏技术,精准定位并修改你的成绩,同时采用深度隐藏技术确保你的操作不被发现。价格实惠,流程快速,事后无痕...
3分钟读懂贝尔法斯特女王大学毕业证QUB毕业证学历认证
学校原版杜克大学毕业证Duke毕业证原版一比一
学校原版加利福尼亚大学戴维斯分校毕业证UCD毕业证原版一比一
3分钟读懂佩珀代因大学毕业证Pepperdine毕业证学历认证
3分钟读懂索尔福德大学毕业证Salford毕业证学历认证
01_Course_Introduction(20210916課後更新).pdf

15 hibernate hql查询2

  • 1. Hibernate 框架 HQL 查询 -2
  • 2. 对象导航查询  对象导航查询 : 在 HQL 中采用 . 进行导航 如: from Student as s where s.classes.className like ? 代码获取: Query query = session.createQuery(hql); // 返回结果集属性列表 , 姓名的集合 List stuList = query.setParameter(0, "%T0506%") .list(); for(Iterator iterator = stuList.iterator();iterator.hasNext();) { Student stu = (Student)iterator.next(); System.out.println("stu.classid = "+ stu.getClasses().getClassId()); System.out.println("stu.className = "+ stu.getClasses().getClassName()); System.out.println("stu.name = "+ stu.getStuName()); } www.sodi.com.cn
  • 3. 操作演示 操作演示 www.sodi.com.cn
  • 4. 原生 SQL 查询  HQL 也支持直接使用 sql 进行查询 : 如: select * from tab_student -- SQL 语句对于 HQL 是不认 可的 // 创建普通 SQL 语句 , 注意表名和列名 String sql = "select stu_id,stu_name from tab_student where stu_name like '% 周 %'"; Query query = session.createSQLQuery(sql); // 返回结果集属性列表 , 姓名的集合 List stuList = query.list(); for(Iterator iterator = stuList.iterator();iterator.hasNext();) { // 查询结果为对象数组集合 Object obj[] = (Object[])iterator.next(); System.out.println("stu.id = "+ obj[0]); System.out.println("stu.name = "+ obj[1]); } System.out.println(" 共有学生: "+stuList.size()); www.sodi.com.cn
  • 5. 操作演示 操作演示 www.sodi.com.cn
  • 6. 连接 (join) 查询  我们也可以为相关联的实体甚至是对一个集合中的全部 元素指定一个别名 , 这时要使用关键字 join 。  连接类型:  inner join (内连接)  left outer join (左外连接)  right outer join (右外连接) 注:语句 inner join, left outer join 以及 right outer join 可以简写 。 www.sodi.com.cn
  • 7. 连接 (join) 查询 // 内连接 String hql = "select s.stuName,c.className from Student as s join s.classes as c"; String hql = "select s.stuName,c.className from Student as s inner join s.classes as c"; // 左外连接 String hql = "select s.stuName,c.className from Student as s left join s.classes as c"; String hql = "select s.stuName,c.className from Student as s left outer join s.classes as c"; // 右外连接 String hql = "select s.stuName,c.className from Student as s right join s.classes as c"; String hql = "select s.stuName,c.className from Student as s right outer join s.classes as c"; www.sodi.com.cn
  • 8. 操作演示 操作演示 www.sodi.com.cn
  • 9. 聚集函数查询  HQL 查询可以返回作用于属性之上的聚集函数的计算结 果  支持的聚集函数如下: avg(...) sum(...) min(...) max(...) count(…) www.sodi.com.cn
  • 10. 聚集函数查询 String hql = "select count(*) from Student s"; String hql = "select max(s.stuAge),min(s.stuAge),avg(s.stuAge) from Student as s"; 以上查询结果返回单一值,所以可以使用 session.createQuery(hql).uniqueResult() // 统计每个班级的人数 String hql = "select c.className,count(*) from Student as s inner join s.classes as c group by c.className"; www.sodi.com.cn
  • 11. 操作演示 操作演示 www.sodi.com.cn
  • 12. 分页查询 setFirstResult() 从 0 开始 setMaxResults() 每页显示多少条数据 例如: String hql = "from Student as s order by s.stuId asc"; List list = session.createQuery(hql) .setFirstResult(0) .setMaxResults(5) .list(); www.sodi.com.cn
  • 13. 操作演示 操作演示 www.sodi.com.cn
  • 14. 总结  对象导航查询  原生 SQL 查询  连接查询  聚合统计查询  分页查询 www.sodi.com.cn