SlideShare a Scribd company logo
1 of 15
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

Viewers also liked

12 hibernate 集合映射
12 hibernate 集合映射12 hibernate 集合映射
12 hibernate 集合映射Zelin Wang
 
3 hibernate映射元素和类型
3 hibernate映射元素和类型3 hibernate映射元素和类型
3 hibernate映射元素和类型Zelin Wang
 
Kommune + unge + sosiale medier = sant
Kommune + unge + sosiale medier = santKommune + unge + sosiale medier = sant
Kommune + unge + sosiale medier = santDelta-prosjektet
 
7 hibernate最佳实践
7 hibernate最佳实践7 hibernate最佳实践
7 hibernate最佳实践Zelin Wang
 
youth civic engagement in social media
youth civic engagement in social mediayouth civic engagement in social media
youth civic engagement in social mediaDelta-prosjektet
 
9 hibernate 一对多关系映射
9 hibernate 一对多关系映射9 hibernate 一对多关系映射
9 hibernate 一对多关系映射Zelin Wang
 
10 hibernate 多对多关系映射
10 hibernate 多对多关系映射10 hibernate 多对多关系映射
10 hibernate 多对多关系映射Zelin Wang
 
Plan - innovative måter å møte unge på
Plan - innovative måter å møte unge påPlan - innovative måter å møte unge på
Plan - innovative måter å møte unge påDelta-prosjektet
 
16 hibernate criteria查询
16 hibernate criteria查询16 hibernate criteria查询
16 hibernate criteria查询Zelin Wang
 

Viewers also liked (10)

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

Similar to 15 hibernate hql查询2

Hibernate查询
Hibernate查询Hibernate查询
Hibernate查询llying
 
Java 操作 Excel (读)
Java 操作 Excel (读)Java 操作 Excel (读)
Java 操作 Excel (读)wensheng wei
 
Ejb工作原理学习笔记
Ejb工作原理学习笔记Ejb工作原理学习笔记
Ejb工作原理学习笔记yiditushe
 
炎炎夏日學 Android 課程 - Part1: Kotlin 語法介紹
炎炎夏日學 Android 課程 -  Part1: Kotlin 語法介紹炎炎夏日學 Android 課程 -  Part1: Kotlin 語法介紹
炎炎夏日學 Android 課程 - Part1: Kotlin 語法介紹Johnny Sung
 
从问题开始,谈前端架构
从问题开始,谈前端架构从问题开始,谈前端架构
从问题开始,谈前端架构裕波 周
 
JavaScript 技術手冊第 5 章
JavaScript 技術手冊第 5 章JavaScript 技術手冊第 5 章
JavaScript 技術手冊第 5 章Justin Lin
 
第8章结构体与共用体
第8章结构体与共用体第8章结构体与共用体
第8章结构体与共用体summerfeng
 
Java华为面试题
Java华为面试题Java华为面试题
Java华为面试题yiditushe
 

Similar to 15 hibernate hql查询2 (9)

Hibernate查询
Hibernate查询Hibernate查询
Hibernate查询
 
Java 操作 Excel (读)
Java 操作 Excel (读)Java 操作 Excel (读)
Java 操作 Excel (读)
 
Ejb工作原理学习笔记
Ejb工作原理学习笔记Ejb工作原理学习笔记
Ejb工作原理学习笔记
 
Java物件導向
Java物件導向Java物件導向
Java物件導向
 
炎炎夏日學 Android 課程 - Part1: Kotlin 語法介紹
炎炎夏日學 Android 課程 -  Part1: Kotlin 語法介紹炎炎夏日學 Android 課程 -  Part1: Kotlin 語法介紹
炎炎夏日學 Android 課程 - Part1: Kotlin 語法介紹
 
从问题开始,谈前端架构
从问题开始,谈前端架构从问题开始,谈前端架构
从问题开始,谈前端架构
 
JavaScript 技術手冊第 5 章
JavaScript 技術手冊第 5 章JavaScript 技術手冊第 5 章
JavaScript 技術手冊第 5 章
 
第8章结构体与共用体
第8章结构体与共用体第8章结构体与共用体
第8章结构体与共用体
 
Java华为面试题
Java华为面试题Java华为面试题
Java华为面试题
 

More from Zelin Wang

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

More from Zelin Wang (7)

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

Recently uploaded

educ6506presentationtc3302771-240427173057-06a46de5.pptx
educ6506presentationtc3302771-240427173057-06a46de5.pptxeduc6506presentationtc3302771-240427173057-06a46de5.pptx
educ6506presentationtc3302771-240427173057-06a46de5.pptxmekosin001123
 
泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书
泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书
泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书jakepaige317
 
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...黑客 接单【TG/微信qoqoqdqd】
 
EDUC6506_ClassPresentation_TC330277 (1).pptx
EDUC6506_ClassPresentation_TC330277 (1).pptxEDUC6506_ClassPresentation_TC330277 (1).pptx
EDUC6506_ClassPresentation_TC330277 (1).pptxmekosin001123
 
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptx
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptxEDUC6506(001)_ClassPresentation_2_TC330277 (1).pptx
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptxmekosin001123
 
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制jakepaige317
 

Recently uploaded (6)

educ6506presentationtc3302771-240427173057-06a46de5.pptx
educ6506presentationtc3302771-240427173057-06a46de5.pptxeduc6506presentationtc3302771-240427173057-06a46de5.pptx
educ6506presentationtc3302771-240427173057-06a46de5.pptx
 
泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书
泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书
泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书
 
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...
 
EDUC6506_ClassPresentation_TC330277 (1).pptx
EDUC6506_ClassPresentation_TC330277 (1).pptxEDUC6506_ClassPresentation_TC330277 (1).pptx
EDUC6506_ClassPresentation_TC330277 (1).pptx
 
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptx
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptxEDUC6506(001)_ClassPresentation_2_TC330277 (1).pptx
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptx
 
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制
 

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