Hibernate Criteria查询详解:从QBE到复杂条件
需积分: 9 73 浏览量
更新于2024-08-01
收藏 69KB DOC 举报
"本文将详细介绍Hibernate中的Criteria查询机制,包括其基本用法、QueryByExample(QBE)和QueryByCriteria(QBC)的概念以及常见的比较运算符的使用。"
在Java持久化框架Hibernate中,Criteria API提供了一种面向对象的方式来执行数据库查询。Criteria API允许开发者动态构建查询,而无需直接编写SQL语句,这提高了代码的可读性和可维护性。下面我们将深入探讨Criteria的使用。
首先,我们来看QueryByExample(QBE)的概念。QBE允许我们根据一个实例对象来创建查询模板。例如,如果我们有一个`Student`类的实例`s`,其中包含了我们想要匹配的属性值,我们可以创建一个Criteria对象,然后添加Example创建的条件进行查询:
```java
Criteriacri = session.createCriteria(Student.class);
cri.add(Example.create(s));
List<Student> list = cri.list();
```
这段代码会返回所有属性与`s`相匹配的`Student`对象。
接下来是QueryByCriteria(QBC),它由Criteria、Criterion、Order和Restrictions等类组成。Criteria代表查询本身,Criterion表示查询条件,Order处理排序,而Restrictions则包含了一系列的比较运算符。以下是一个QBC查询的例子:
```java
session = this.getSession();
Criteria cri = session.createCriteria(JdItemSerialnumber.class);
Criterion cron = Restrictions.like("customer", name);
cri.add(cron);
List<JdItemSerialnumber> list = cri.list();
```
这里我们创建了一个Criteria对象,针对`JdItemSerialnumber`类,然后添加了一个条件,即`customer`字段需与`name`匹配。
Criteria API还支持多种比较运算符,如下所示:
1. `eq()`:等于,相当于HQL中的`=`
2. `not(EqExpression)`:不等于,相当于`<>`
3. `gt()`:大于,相当于`>`
4. `ge()`:大于等于,相当于`>=`
5. `lt()`:小于,相当于`<`
6. `le()`:小于等于,相当于`<=`
7. `isnull()`:等于空值
8. `isNotNull()`:非空值
9. `like()`:字符串模式匹配,例如模糊查询
10. `and()` 和 `conjunction()`:逻辑与
11. `or()` 和 `disjunction()`:逻辑或
12. `not()`:逻辑非
13. `in(列表)`:等于列表中的某一个值
14. `not(in(列表))`:不等于列表中任意一个值
15. `between(x and y)`:在指定范围之间
例如,如果我们要查询`age`字段大于18且小于30的学生,可以这样编写:
```java
cri.add(Restrictions.ge("age", 18));
cri.add(Restrictions.lt("age", 30));
```
通过Criteria API,开发者可以根据业务需求灵活地构建复杂的查询条件,同时保持代码的简洁和清晰。理解并熟练运用Criteria API,将极大地提高你在Hibernate开发中的效率。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2012-02-17 上传
2022-06-19 上传
2011-03-10 上传
2012-01-16 上传
2011-10-18 上传
2010-01-14 上传
brystel
- 粉丝: 2
- 资源: 7
最新资源
- Angular实现MarcHayek简历展示应用教程
- Crossbow Spot最新更新 - 获取Chrome扩展新闻
- 量子管道网络优化与Python实现
- Debian系统中APT缓存维护工具的使用方法与实践
- Python模块AccessControl的Windows64位安装文件介绍
- 掌握最新*** Fisher资讯,使用Google Chrome扩展
- Ember应用程序开发流程与环境配置指南
- EZPCOpenSDK_v5.1.2_build***版本更新详情
- Postcode-Finder:利用JavaScript和Google Geocode API实现
- AWS商业交易监控器:航线行为分析与营销策略制定
- AccessControl-4.0b6压缩包详细使用教程
- Python编程实践与技巧汇总
- 使用Sikuli和Python打造颜色求解器项目
- .Net基础视频教程:掌握GDI绘图技术
- 深入理解数据结构与JavaScript实践项目
- 双子座在线裁判系统:提高编程竞赛效率