精通Hibernate Criteria查询:对象化检索与模糊匹配
需积分: 9 189 浏览量
更新于2024-08-18
收藏 2.18MB PPT 举报
"本章主要探讨了如何使用Hibernate进行数据检索,特别是重点讲解了Criteria查询的使用。Criteria查询允许以对象的方式构建查询,提供了一种更面向对象的查询方式,适用于不熟悉SQL或者希望避免硬编码SQL的情况。此外,本章还提到了HQL(Hibernate查询语言)作为另一种查询手段,并解释了为何会使用HQL及其基本用法。"
在Hibernate中,Criteria查询是一种强大的查询机制,它允许开发者以编程的方式构建查询,而不是直接写SQL语句。这种查询方式使得代码更加灵活,易于维护,尤其是在动态构建查询条件时。以下是使用Criteria查询的一些关键点:
1. 创建Criteria对象:首先,你需要通过Session对象的createCriteria()方法创建Criteria对象,这代表了你想要查询的实体类。
2. 模糊查询:你可以添加Restrictions对象来实现模糊查询,如使用like方法配合通配符%来实现部分匹配。
3. 大于等于和小于等于:使用gt("property", value)和lt("property", value)方法可以设置大于或小于等于的条件。
4. 支持in和between:Criteria查询也支持in操作,通过inList("property", values)方法可以指定属性值在某个列表内。对于between操作,可以使用between("property", lowerBound, upperBound)方法。
5. 数组类型:如果查询涉及到数组类型的属性,Hibernate提供了专门的方法来处理,例如inArray("property", array)。
6. 类似EL表达式的属性浏览语法:Criteria查询允许类似表达式式的方式来访问对象的属性,比如.createCriteria("relatedEntity").add(Restrictions.eq("property", value)),这会查询与当前实体关联的对象的某个属性。
7. 排序规则:Criteria查询可以添加多个Order对象来指定排序规则,例如.addOrder(Order.asc("property"))或.addOrder(Order.desc("property"))。
在HQL查询方面,它是Hibernate的专用查询语言,更接近于面向对象,可以直接使用Java实体类的名字而不是表名。使用HQL的基本步骤包括:
1. 获取Session:首先,你需要通过SessionFactory创建一个Session实例。
2. 编写HQL语句:然后,根据需求编写HQL查询,HQL语句的结构类似SQL,但面向对象,比如`from tbl_FWXX`。
3. 创建Query对象:使用Session的createQuery()方法,传入HQL语句来创建Query对象。
4. 执行查询:最后,调用Query对象的list()或uniqueResult()方法来执行查询并获取结果。
HQL支持别名,可以使用`select fw from TblFWXX as fw`这样的形式,其中fw是别名,简化了查询语句。它还可以选择性地包含或省略select子句,直接从实体类中获取全部字段。
本章的示例场景涵盖了房屋查询,包括对标题的模糊查询、街道的精确查询、租金的范围查询以及特定联系人的街道信息查询,同时也提到了分页查询的实现,这些都是在实际开发中非常常见的需求。通过学习和熟练掌握这些内容,开发者能够更有效地利用Hibernate进行数据检索。
2019-04-26 上传
2019-04-26 上传
2023-06-21 上传
2021-02-18 上传
2008-01-13 上传
2021-04-10 上传
2021-05-30 上传
2017-09-11 上传
2012-07-26 上传
无不散席
- 粉丝: 32
- 资源: 2万+
最新资源
- Python中快速友好的MessagePack序列化库msgspec
- 大学生社团管理系统设计与实现
- 基于Netbeans和JavaFX的宿舍管理系统开发与实践
- NodeJS打造Discord机器人:kazzcord功能全解析
- 小学教学与管理一体化:校务管理系统v***
- AppDeploy neXtGen:无需代理的Windows AD集成软件自动分发
- 基于SSM和JSP技术的网上商城系统开发
- 探索ANOIRA16的GitHub托管测试网站之路
- 语音性别识别:机器学习模型的精确度提升策略
- 利用MATLAB代码让古董486电脑焕发新生
- Erlang VM上的分布式生命游戏实现与Elixir设计
- 一键下载管理 - Go to Downloads-crx插件
- Java SSM框架开发的客户关系管理系统
- 使用SQL数据库和Django开发应用程序指南
- Spring Security实战指南:详细示例与应用
- Quarkus项目测试展示柜:Cucumber与FitNesse实践