




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、让IT教学更简单,让IT学习更有效了解Hibernate检索数据的方式学会使用HQL和QBC检索查询数据熟练掌握HQL的应用第十章 Hibernate的检索方式让IT教学更简单,让IT学习更有效 学习目标掌握HQL的应用13了解Hibernate检索数据的方式2熟悉使用HQL和QBC检索查询数据掌握了解熟悉让IT教学更简单,让IT学习更有效 目录Hibernate检索方式的概述10.110.1点击查看本小节知识架构HQL检索10.210.2点击查看本小节知识架构QBC检索10.310.3点击查看本小节知识架构让IT教学更简单,让IT学习更有效 知识架构返回目录10.1.110.1.2导航对象图
2、检索方式OID检索方式10.1.3HQL检索方式10.1.410.1.5QBC检索方式本地SQL检索方式10.1 Hibernate检索方式的概述让IT教学更简单,让IT学习更有效 知识架构返回目录10.2.110.2.2指定别名投影查询10.2.3动态条件查询10.2.410.2.5条件查询分页查询10.2 HQL检索让IT教学更简单,让IT学习更有效10.3 QBC检索返回目录 知识架构10.3.110.3.2组合查询分页查询让IT教学更简单,让IT学习更有效Hibernate的检索方式 Hibernate的检索方式主要有5种,分别为导航对象图检索方式、OID检索方式、HQL检索方式、QB
3、C检索方式和SQL检索方式。下面就对这5种检索方式的使用进行讲解。10.1 Hibernate检索 方式的概述让IT教学更简单,让IT学习更有效 根据已经加载的对象,导航到其他对象。它利用类与类之间的关系来检索对象。譬如要查找一份订单对应的客户,就可以由订单对象自动导航找到订单所属的客户对象。当然,前提是必须在对象关系映射文件上配置了多对一的关系。其检索方式如下所示。导航对象图检索方式10.1 Hibernate检索 方式的概述 Order order = (Order )session.get(Order.class,1); Customer customer = order.getCust
4、omer();让IT教学更简单,让IT学习更有效 主要指用Session的get()和load()方法加载某条记录对应的对象。如下面两种加载客户对象的方式,就是OID检索方式,具体如下。OID检索方式10.1 Hibernate检索 方式的概述 Customer customer = (Customer )session.get(Customer.class,1); Customer customer = (Customer )session.load(Customer.class,1);让IT教学更简单,让IT学习更有效 HQL(Hibernate Query Language)是面向对象的
5、查询语言,它和SQL查询语言有些相似,但它使用的是类、对象和属性的概念,而没有表和字段的概念。在Hibernate提供的各种检索方式中,HQL是官方推荐的查询语言,也是使用最广泛的一种检索方式。它具有如下功能。在查询语句中设定各种查询条件。支持投影查询,即仅检索出对象的部分属性。支持分页查询。支持分组查询,允许使用group by和having关键字。提供内置聚集函数,如sum()、min()和max()。能够调用用户定义的SQL函数。支持子查询,即嵌套查询。支持动态绑定参数。HQL检索方式10.1 Hibernate检索 方式的概述让IT教学更简单,让IT学习更有效10.1 Hibernat
6、e检索 方式的概述 Hibernate提供的Query接口是专门的HQL查询接口,它能够执行各种复杂的HQL查询语句。完整的HQL语句结构如下。select/update/deletefromwheregroup byhavingorder byasc/desc 其中的update/delete为Hibernate3中所新添加的功能,可见HQL查询非常类似于标准SQL查询。通常情况下,当检索数据表中的所有记录时,查询语句中可以省略select关键字,示例如下所示。 String hql = from Customer; 如果执行该查询语句,则会返回应用程序中的所有Customer对象,需要注意
7、的是Customer是类名,而不是表名,类名需要区分大小写,而关键字from不区分大小写。让IT教学更简单,让IT学习更有效 QBC(Query By Criteria)是Hibernate提供的另一种检索对象的方式,它主要由Criteria接口、Criterion接口和Expression类组成。Criteria接口是Hibernate API中的一个查询接口,它需要由session进行创建。Criterion是Criteria的查询条件,在Criteria中提供了add(Criterion criterion)方法来添加查询条件。使用QBC检索对象的示例代码,如下所示。QBC检索方式10.
8、1 Hibernate检索 方式的概述 Criteria criteria = session.createCriteria(Customer.class); /创建criteria对象 Criterion criterion = Restrictions.eq(id, 1); /设定查询条件 criteria.add(criterion); /添加查询条件 List cs = criteria.list(); /执行查询,返回查询结果让IT教学更简单,让IT学习更有效 采用HQL或QBC检索方式时,Hibernate生成标准的SQL查询语句,适用于所有的数据库平台,因此这两种检索方式都是跨平
9、台的。但有的应用程序可能需要根据底层数据库的SQL方言,来生成一些特殊的查询语句。在这种情况下,可以利用Hibernate提供的SQL检索方式。使用SQL检索方式检索对象的示例代码,如下所示:本地SQL检索方式10.1 Hibernate检索 方式的概述 SQLQuery sqlQuery = session.createSQLQuery(select id,name,age,city from customer);让IT教学更简单,让IT学习更有效概 述 Query接口是专门的HQL查询接口,在第七章中,已经详细介绍过Hibernate的Query接口,并举例演示了Query接口中list(
10、)方法的使用。本节将对HQL中其他几种常用检索方式进行讲解。10.2 HQL检索让IT教学更简单,让IT学习更有效 HQL语句类似于SQL语句,在HQL语句中也可以使用别名。别名使用关键字as指定,但在实际使用时,as关键字可以省略。下面就通过示例来演示在HQL中别名的使用。 在Eclipse中创建一个Web项目chapter10,添加Hibernate所需的jar包到其lib目录中,并发布到类路径下。参见第七章chapter07项目创建Customer.java类文件、Customer.hbm.xml映射文件以及hibernate.cfg.xml配置文件。新建test源文件夹,并在其中建立c
11、n.itcast.test包,在包中建立一个名为HQLTest的类文件,在类中创建一个名为aliasTest()的方法,该方法使用HQL别名的方式查询数据,具体内容请查看教材10.2.1小结案例 。指定别名10.2 HQL检索让IT教学更简单,让IT学习更有效 在通常的查询过程中,有时只需查询部分属性,并不需要查询一个类的所有属性。如果仍然查询所有属性,是十分影响查询性能的。为此,在Hibernate中提供了投影查询,用来查询对象的部分属性。 在查询类对象的部分属性时,需要使用关键字select,并在其后加上需要查询的属性,然后就是from关键字和实体类名。在HQLTest类中,编写porti
12、onQueryTest()方法,只查询customer表中的name和age信息,具体内容请查看教材10.2.2小结案例 。投影查询10.2 HQL检索让IT教学更简单,让IT学习更有效 在投影查询时,返回的查询对象是一个对象数组,而且还要处理顺序,操作起来非常不方便。为了方便操作,提高检索效率,并且体现面向对象思想,可以把返回结果重新组成一个实体的实例,这种方式就是动态实例化查询。 下面就通过修改投影查询示例的方式,来演示动态实例查询。在HQLTest类中编写一个名称为dynamicQueryTest()的方法,该方法的功能同样是检索出客户的姓名和年龄信息。具体内容请查看教材10.2.3小结
13、案例 。动态实例查询10.2 HQL检索让IT教学更简单,让IT学习更有效 在实际应用中,通常需要根据指定的条件进行查询。这时,可以使用HQL语句提供的where子句进行查询,或者使用like关键字进行模糊查询。 依据参数的形式不同,可将条件查询分为两种:按参数位置查询和按参数名称查询。条件查询10.2 HQL检索让IT教学更简单,让IT学习更有效按参数位置查询 按参数位置查询时,需要在HQL语句中使用“?”来定义参数的位置,然后利用Query对象的setXxx()方法为其赋值,此种操作方式与JDBC的PrepareStatement对象的参数绑定方式相似。下面通过示例演示查询方式。 在HQL
14、Test类中编写paramQueryTest1()方法,使用按照参数查询的方式,模糊查询姓名中包含“jo”的人的信息,具体内容请查看教材10.2.4小结案例 。 在Query接口中,提供了其它一些给参数赋值的方法,如下表所示。10.2 HQL检索让IT教学更简单,让IT学习更有效按参数名称查询 按参数名字查询时,需要在HQL语句中定义命名参数,命名参数是“:”与自定义参数名的组合,具体内容请查看教材10.2.4小结案例 。 在HQL语句中设定查询条件时,还可以在where子句中设定查询运算符。HQL中的查询运算符与SQL中的运算符含义相同,常用的查询运算符如下表所示。10.2 HQL检索让IT
15、教学更简单,让IT学习更有效 在实际应用中,批量查询数据时,在单个页面上显示出所有查询结果,这显然是不合理的,这就需要开发人员对查询结果进行分页显示。Hibernate的Query接口中,提供了用于分页显示的查询方法setFirstResult(int firstResult)和setMaxResult(int maxResult)。这两个方法的说明如下:setFirstResult(int firstResult):该方法设定从哪个对象开始查询,参数firstResult表示这个对象在查询结果中的索引(索引初始值为0)。setMaxResult(int maxResult):该方法设置一次返
16、回多少个对象,通常与setFirstResult(int firstResult)方法结合使用,来限制结果集的范围。默认时,返回查询结果中的所有对象。分页查询10.2 HQL检索让IT教学更简单,让IT学习更有效 下面通过示例来演示,在HQL中如何实现分页功能。在HQLTest类中,编写queryPageTest()方法,使用该方法实现从查询结果的第2个对象开始(即从第3条记录开始),返回3个Customer对象,具体内容请查看教材10.2.5小结案例。10.2 HQL检索让IT教学更简单,让IT学习更有效概 述 QBC(Query By Criteria)检索是Hibernate的另一种对象
17、检索方式。QBC检索主要由Criteria接口来完成,该接口是Hibernate API提供的一个查询接口,位于org.hibernate包下。在第七章中,已经详细介绍过Criteria接口的功能及使用步骤,并通过示例演示了条件查询,本节将对QBC中的其他两种常用检索方式进行讲解。10.3 QBC检索让IT教学更简单,让IT学习更有效 组合查询是指通过Restrictions工具类的相应方法动态的构造查询条件,并将查询条件加入Criteria对象,从而实现查询功能。接下来,通过示例来演示在QBC检索中如何实现组合查询。 在cn.itcast.test包中,新建测试类QBCTest,在类中建立一个名称为qbcTest1()的方法,具体内容请查看教材10.3.1小结案例。组合查询10.3 QBC检索让IT教学更简单,让IT学习更有效 QBC检索是使用Restrictions对象编写查询条件的,在Restrictions类中提供了大量的静态方法来创建查询条件。其常用的方法如下表所示。10.3 QBC检索让IT教学更简单,让IT学习更有效 在上一节的HQL检索中,已经使用HQL实现了分页功能。在QBC检索方式中,使用Criteria对象同样可以实现分页功能,该功能是通过Criteria对象的setFirstResult(i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 仓库管理合同范例
- 新生儿低血糖症的临床护理
- 买卖汽车中介合同范例
- 橙绿卡校园安全模板
- 医疗保险政策在公共卫生事件中的作用分析
- ic购销合同范例
- 代办园林养护合同范例
- 办公自动化与医疗数据安全的平衡策略
- 医患关系和谐化从沟通策略开始
- 区块链技术下的知识产权保护与市场潜力分析
- 中国证券经营行业市场发展现状分析及发展趋势与投资前景研究报告
- 陕西省咸阳市2025届高三下学期高考模拟检测(三)物理试题(含答案)
- 浙江省温州市2023-2024学年高一下学期期末考试语文试卷(含答案)
- GB 38031-2025电动汽车用动力蓄电池安全要求
- 水果店运营与管理培训课件
- 1号卷·A10联盟2025届高三4月质检考物理试题及答案
- 激光应用技术发展路径试题及答案
- 2025年一级建造师之一建矿业工程实务题库附答案(典型题)
- 国家职业技能标准-(粮油)仓储管理员
- 《自动化生产线集成与应用- Integration》课件-项目一 自动化生产线概述
- 履带式起重机进场验收表
评论
0/150
提交评论