Hibernate Criteria: 条件查询与高级操作详解

需积分: 10 9 下载量 142 浏览量 更新于2024-10-16 收藏 39KB DOC 举报
Hibernate条件查询Criteria是Hibernate框架中用于执行基于特定条件的查询的重要工具。Criteria接口是 Hibernate的核心部分,它允许开发者对持久类进行动态查询,而Criterion则代表一个具体的查询条件。Criteria对象与Session紧密关联,Session是Criteria的实例工厂,用于创建并执行查询。 在使用Criteria进行条件查询时,首先需要创建一个Criteria对象,通过调用`sess.createCriteria(News.class)`方法,这里的参数是你想要查询的持久类类型,例如News。然后,可以使用Criteria的`add(Criterion criterion)`方法来添加查询条件,这一步是构建查询逻辑的关键。 Restrictions类是Hibernate提供的一个重要的工具,它包含了各种静态方法,如`Restrictions.eq()`、`Restrictions.between()`等,这些方法用于创建不同的Criterion实例。例如,`Restrictions.like()`用于模糊匹配,`Restrictions.between()`则用于指定范围查询。以下是一些常见的QL运算符及其对应的QBC运算符: 1. 等于:`=`, `Restrictions.eq()` - 用于查询字段值等于给定值的记录。 2. 不等于:`<>`, `Restrictions.not(Exprission.eq())` - 查询字段值不等于给定值的记录。 3. 大于:`>`, `Restrictions.gt()` - 检查字段值是否大于指定值。 4. 大于等于:`>=`, `Restrictions.ge()` - 检查字段值是否大于或等于指定值。 5. 小于:`<`, `Restrictions.lt()` - 检查字段值是否小于指定值。 6. 小于等于:`<=`, `Restrictions.le()` - 检查字段值是否小于或等于指定值。 7. 空值检查:`isnull`, `Restrictions.isnull()` - 检查字段是否为NULL。 8. 非空值检查:`isnotnull`, `Restrictions.isNotNull()` - 检查字段是否不为NULL。 9. 模糊匹配:`like`, `Restrictions.like("%fendou%")` - 匹配包含特定字符串的记录。 通过组合这些Criterion和Restrictions,你可以构造出复杂的查询条件,如同时满足多个条件的查询。最后,执行查询时调用Criteria的`list()`方法,它将返回符合所有条件的记录列表。 总结来说,Hibernate Criteria提供了一种灵活的方式来组织和执行复杂的条件查询,这对于数据库操作的动态性和灵活性至关重要。通过理解和熟练运用Criteria和Restrictions,开发者可以更高效地操作持久化对象,满足实际项目中的各种查询需求。