精通Hibernate Criteria查询:对象化检索与模糊匹配

需积分: 9 0 下载量 103 浏览量 更新于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进行数据检索。