Hibernate Criteria查询详解:从QBE到复杂条件
"本文将详细介绍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开发中的效率。
![](https://csdnimg.cn/release/download_crawler_static/2559619/bg4.jpg)
剩余18页未读,继续阅读
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![application/x-zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/7b816fcae92e4cad8ae945b97a90a948_brystel.jpg!1)
- 粉丝: 2
- 资源: 7
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 构建Cadence PSpice仿真模型库教程
- VMware 10.0安装指南:步骤详解与网络、文件共享解决方案
- 中国互联网20周年必读:影响行业的100本经典书籍
- SQL Server 2000 Analysis Services的经典MDX查询示例
- VC6.0 MFC操作Excel教程:亲测Win7下的应用与保存技巧
- 使用Python NetworkX处理网络图
- 科技驱动:计算机控制技术的革新与应用
- MF-1型机器人硬件与robobasic编程详解
- ADC性能指标解析:超越位数、SNR和谐波
- 通用示波器改造为逻辑分析仪:0-1字符显示与电路设计
- C++实现TCP控制台客户端
- SOA架构下ESB在卷烟厂的信息整合与决策支持
- 三维人脸识别:技术进展与应用解析
- 单张人脸图像的眼镜边框自动去除方法
- C语言绘制图形:余弦曲线与正弦函数示例
- Matlab 文件操作入门:fopen、fclose、fprintf、fscanf 等函数使用详解
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)