Hibernate Criteria查询详解:QBE与QBC的使用
需积分: 9 127 浏览量
更新于2024-07-22
收藏 69KB DOC 举报
"这篇文档详细介绍了Hibernate框架中Criteria API的使用方法,包括QueryByExample(QBE)和QueryByCriteria(QBC)的概念及其在实际操作中的应用。通过示例展示了如何利用Criteria API进行条件查询、比较运算符的使用以及逻辑操作的实现。"
在Hibernate中,Criteria API提供了一种动态构建SQL查询的方式,它允许开发者在运行时根据业务需求构造查询条件,而无需手动编写SQL语句。Criteria API具有高度封装和灵活性,是Hibernate框架的重要组成部分。
1. QueryByExample(QBE)
QBE是一种基于实例的查询方式,它允许我们创建一个对象作为查询模板,然后将这个对象的属性作为查询条件。例如:
```java
Criteriacri = session.createCriteria(Student.class);
cri.add(Example.create(s)); // s 是一个 Student 对象
List<Student> list = cri.list();
```
在这个例子中,`s`对象的属性将被用来匹配数据库中的记录,所有与`s`属性匹配的`Student`对象都将被查询出来。
2. QueryByCriteria(QBC)
QBC是基于Criteria、Criterion、Order和Restrictions等类构建查询的API。下面是一个基本的QBC查询示例:
```java
Criteriacri = session.createCriteria(JdItemSerialnumber.class);
Criterion cron = Restrictions.like("customer", name);
cri.add(cron);
List<JdItemSerialnumber> list = cri.list();
```
这里,`createCriteria`用于创建一个针对`JdItemSerialnumber`类的Criteria对象,`Restrictions.like`用于添加一个“like”条件,最后通过`add`方法将条件添加到Criteria中,并执行查询。
3. 比较运算符
Criteria API提供了丰富的比较运算符,与HQL的运算符对应:
- `Restrictions.eq()`:等于
- `Restrictions.not(Expressions.eq())`:不等于
- `Restrictions.gt()`:大于
- `Restrictions.ge()`:大于等于
- `Restrictions.lt()`:小于
- `Restrictions.le()`:小于等于
- `Restrictions.isnull()`:等于空值
- `Restrictions.isNotNull()`:非空值
- `Restrictions.like()`:字符串模式匹配
- `Restrictions.and()` / `Restrictions.conjunction()`:逻辑与
- `Restrictions.or()` / `Restrictions.disjunction()`:逻辑或
- `Restrictions.not()`:逻辑非
- `Restrictions.in(list)`:等于列表中的某一个值
- `Restrictions.not(Restrictions.in(list))`:不等于列表中任意一个值
- `Restrictions.between(x, y)`:在两个值之间
4. 逻辑操作
Criteria API支持使用`and`、`or`和`not`方法组合多个条件,构建复杂的逻辑表达式。例如,可以这样实现“年龄大于18且名字以'John'开头”的查询:
```java
cri.add(Restrictions.ge("age", 18));
cri.add(Restrictions.like("name", "John%"));
```
Hibernate的Criteria API提供了一种强大的、类型安全的方式来执行对象持久化查询,使得开发者能够更加灵活地处理各种查询需求,同时避免了直接操作SQL可能导致的潜在问题。在实际项目中,熟练掌握Criteria API能够极大地提高开发效率和代码的可维护性。
2010-12-01 上传
2009-07-02 上传
2018-04-17 上传
2023-05-03 上传
2023-03-24 上传
2023-03-24 上传
2023-03-24 上传
2023-05-03 上传
2024-09-10 上传
小枯1
- 粉丝: 0
- 资源: 1
最新资源
- C语言快速排序算法的实现与应用
- KityFormula 编辑器压缩包功能解析
- 离线搭建Kubernetes 1.17.0集群教程与资源包分享
- Java毕业设计教学平台完整教程与源码
- 综合数据集汇总:浏览记录与市场研究分析
- STM32智能家居控制系统:创新设计与无线通讯
- 深入浅出C++20标准:四大新特性解析
- Real-ESRGAN: 开源项目提升图像超分辨率技术
- 植物大战僵尸杂交版v2.0.88:新元素新挑战
- 掌握数据分析核心模型,预测未来不是梦
- Android平台蓝牙HC-06/08模块数据交互技巧
- Python源码分享:计算100至200之间的所有素数
- 免费视频修复利器:Digital Video Repair
- Chrome浏览器新版本Adblock Plus插件发布
- GifSplitter:Linux下GIF转BMP的核心工具
- Vue.js开发教程:全面学习资源指南