Java Hibernate:QBE与QBC查询方式详解及HQL用法

需积分: 9 2 下载量 102 浏览量 更新于2024-09-14 收藏 13KB TXT 举报
Java Hibernate Criteria 是 Hibernate 框架中一个强大的查询工具,它提供了在 Java 对象与数据库之间执行复杂查询的能力,特别是在基于对象关系映射(ORM)的场景下。在 SSH(Spring, Struts, Hibernate)集成的开发环境中,Hibernate Criteria 提供了一种灵活的方式来构建动态查询,避免了硬编码SQL语句,使得代码更加面向对象。 1. QueryByExample (查询例证):这是一种基于例子的查询方式,通过创建一个特定类型的对象实例(如 Student 类),并使用 Hibernate 的 Example 类来设置查询条件。例如,你可以创建一个 Student 对象 s,然后传递给 `createCriteria(Student.class)` 方法,指定需要匹配的属性,最后调用 `.list()` 方法执行查询。这种方式适用于根据部分属性进行模糊匹配。 2. QueryByCriteria (基于准则的查询):这种方式需要直接使用 Criteria 对象,结合 Criterion、Order 和 Restrictions 对象来构造更复杂的查询逻辑。首先,创建 Criteria 对象,然后添加具体的限制条件,如使用 `Restrictions.like` 进行字符串匹配,或者 `Restrictions.gt` 和 `Restrictions.lt` 进行范围比较。比如,可以设置一个名为 `jdItemSerialnumber` 的类,通过 `customer` 属性的名称搜索,然后执行 `.list()` 获取结果。 - 使用 `eq` 或 `!=` 对应于 SQL 的 `=` 和 `<>`,分别用于等于和不等于操作。 - `gt`, `gte`, `lt`, `lte` 分别表示大于、大于等于、小于和小于等于。 - `isnull` 和 `isnotnull` 用于检查字段是否为 null。 - `like` 用于模式匹配,支持通配符。 - `and` 和 `or` 用于组合多个条件,形成逻辑与和逻辑或的关系。 - `not` 用于否定一个条件。 - `in` 和 `not in` 用于包含或排除在一组值中的查询。 - `between` 和 `not between` 用于在两个值之间查找数据,不包括边界。 3. HQL (Hibernate Query Language):虽然 Criteria 是 Hibernate 的核心查询接口,但 HQL 是另一种流行的查询方式,它允许使用 SQL 风格的语句进行查询。HQL 提供了更多的查询选项,如上面提到的各种运算符的等价方法。使用 HQL,开发者可以直接编写SQL查询,或者利用 Hibernate 提供的函数和集合操作。 Hibernate Criteria 是 Hibernate 中非常实用的功能,它简化了基于对象的查询过程,增强了代码的可维护性和扩展性。无论是基于例子还是基于准则的查询,开发者可以根据具体需求灵活选择和组合查询条件,以满足复杂的数据检索需求。