理解Hibernate:Criteria查询详细指南
需积分: 10 188 浏览量
更新于2024-07-31
收藏 73KB DOC 举报
"Hibernate中Criteria的用法"
在Java持久化框架Hibernate中,Criteria API是一种用于动态构建SQL查询的高级接口。它提供了一种类型安全且面向对象的方式来执行数据库查询,无需编写HQL(Hibernate Query Language)语句。Criteria API的主要优点在于其灵活性和代码的可读性,使得开发者能够更方便地根据业务需求构建复杂的查询条件。
1. QBE (Query By Example)
QBE(根据示例查询)是Criteria API的一个简单用法,允许你通过一个实例对象来构建查询条件。例如:
```java
Student s = new Student();
s.setName("John");
Criteria cri = session.createCriteria(Student.class);
cri.add(Example.create(s));
List<Student> list = cri.list();
```
在这个例子中,`Example.create(s)`会基于`s`对象的属性生成查询条件,找出数据库中所有与`s`具有相同属性值的学生记录。
2. QBC (Query By Criteria)
QBC(基于标准查询)是Criteria API的核心部分,它包括Criteria、Criterion、Order和Restrictions等类。以下是一个基本的示例:
```java
Session session = this.getSession();
Criteria cri = session.createCriteria(JdItemSerialnumber.class);
Criterion cron = Restrictions.like("customer", name);
cri.add(cron);
List<JdItemSerialnumber> list = cri.list();
```
在这个例子中,我们创建了一个Criteria对象,然后添加了一个Criterion(条件),即`customer`字段与`name`相匹配的`like`操作。最后,执行查询并返回结果列表。
3. 比较运算符
Criteria API提供了多种比较运算符来构建查询条件:
- `Restrictions.eq()`:等于
- `Restrictions.not(Exprission.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(列表)`:等于列表中的某一个值
- `Restrictions.not(Restrictions.in(列表))`:不在列表中的值
这些运算符允许你在构建查询时指定各种条件,如范围查询、空值检查、模式匹配等。
4. 分组与排序
Criteria API还支持分组(Group By)和排序(Order By)操作。你可以使用`setGroupBy()`方法进行分组,使用`addOrder(Order order)`方法进行排序。例如:
```java
cri.setGroupBy("age");
cri.addOrder(Order.asc("name"));
```
这将按照`age`字段分组,并按`name`字段升序排序结果。
5. 联接与子查询
Criteria API也支持连接(Joins)和子查询(Subqueries)。你可以使用`createCriteria()`方法进行连接查询,使用`subquery()`方法创建子查询。
6. 分页查询
为了实现分页,可以使用`setFirstResult()`和`setMaxResults()`方法。例如:
```java
cri.setFirstResult(startIndex).setMaxResults(pageSize);
```
这将返回从`startIndex`开始的`pageSize`条记录。
Hibernate的Criteria API提供了一种强大的、灵活的查询机制,使得开发者可以在不写SQL的情况下,根据对象模型构建出复杂的查询,提高了代码的可读性和维护性。
kevin_梦幻
- 粉丝: 40
- 资源: 64
最新资源
- PyDeduplication:大多数只是重复数据删除
- restmachine:用于PHP的Web机器实现
- torch_sparse-0.6.4-cp38-cp38-win_amd64whl.zip
- EMD matlab相关工具(包含EEMD,CEEMDAN)
- matlab的slam代码-ORB_SLAM2_error_analysis:ORB_SLAM2_error_analysis
- jdk1.8安装包:jdk-8u161-windows-x64
- head-in-the-clouds:与提供商无关的云供应和Docker编排
- init:环境初始化脚本
- 英雄
- torch_cluster-1.5.6-cp36-cp36m-win_amd64whl.zip
- 关于VSCode如何安装调试C/C++代码的傻瓜安装
- 导航菜单下拉
- Bird
- raspberry-pi-compute-module-base-board:Raspberry Pi计算模块的基板
- 晶格角
- thrift-0.13.0.zip