Hibernate Criteria详解:查询方式与条件操作符
需积分: 9 126 浏览量
更新于2024-07-27
收藏 69KB DOC 举报
在Java编程中,Hibernate是一个广泛使用的持久化框架,它提供了多种方法来操作数据库。其中,Criteria是Hibernate提供的一种强大且灵活的查询构建器,用于构建复杂的SQL查询。Criteria用法分为两种主要方式:QueryByExample (QBE) 和 QueryByCriteria (QBC)。
1. QueryByExample (QBE)
QueryByExample 是通过Example对象来执行查询的方式,它适用于需要根据对象的属性动态匹配数据库记录的情况。例如,假设我们有一个名为`Student`的实体类,你想查找所有`giftortoy`字段值为"2"的学生:
```java
Criteriacri = session.createCriteria(Student.class);
Example.create(s).add(Restrictions.eq("giftortoy", "2")); // s是一个Student对象实例
List<Student> listcri = cri.list();
```
在这个例子中,`Example.create(s)` 创建了一个查询模板,然后使用`Restrictions.eq()`方法指定`giftortoy`字段应等于"2"。
2. QueryByCriteria (QBC)
QueryByCriteria 则更加强调使用Criterion、Criterion子类(如Restrictions)、Order和Criteria对象来构建查询。例如,如果你需要查询`JdItemSerialnumber`表中`customer`字段包含特定名称的所有记录:
```java
Criteriacri = session.createCriteria(JdItemSerialnumber.class);
Criterion cron = Restrictions.like("customer", name); // name是你想要匹配的名称
cri.add(cron);
List<JdItemSerialnumber> list = cri.list();
```
这里使用了`Restrictions.like()`方法来执行字符串模式匹配,`name`将被替换为实际的匹配条件。
比较运算符
Hibernate Criteria支持多种比较运算符,包括但不限于:
- `Restrictions.eq()`: 等于
- `Restrictions.not(Exprission.eq())`: 不等于
- `Restrictions.gt()`: 大于
- `Restrictions.ge()`: 大于等于
- `Restrictions.lt()`: 小于
- `Restrictions.le()`: 小于等于
- `Restrictions.isnull()`: 字段值为NULL
- `Restrictions.isNotNull()`: 字段值不为NULL
- `Restrictions.like()`: 字符串模式匹配
- `Restrictions.and()`: 逻辑与
- `Restrictions.conjunction()`: 逻辑与的工厂方法
- `Restrictions.or()`: 逻辑或
- `Restrictions.disjunction()`: 逻辑或的工厂方法
- `Restrictions.not()`: 逻辑非
- `Restrictions.in()`: 检查字段值是否在指定列表中
- `Restrictions.not(Restrictions.in())`: 检查字段值不在指定列表中
- `Restrictions.between()`: 检查字段值是否在一个范围之内
这些运算符可以帮助开发者构建复杂的查询条件,满足各种业务需求。Criteria用法提供了高级查询能力,使得代码更加灵活和可维护,但同时也需要对查询语句的构造有深入理解。
2023-03-29 上传
2023-05-28 上传
2023-05-17 上传
2023-03-24 上传
2023-07-14 上传
2023-05-26 上传
铁马冰河2014
- 粉丝: 1
- 资源: 16
最新资源
- AirKiss技术详解:无线传递信息与智能家居连接
- Hibernate主键生成策略详解
- 操作系统实验:位示图法管理磁盘空闲空间
- JSON详解:数据交换的主流格式
- Win7安装Ubuntu双系统详细指南
- FPGA内部结构与工作原理探索
- 信用评分模型解析:WOE、IV与ROC
- 使用LVS+Keepalived构建高可用负载均衡集群
- 微信小程序驱动餐饮与服装业创新转型:便捷管理与低成本优势
- 机器学习入门指南:从基础到进阶
- 解决Win7 IIS配置错误500.22与0x80070032
- SQL-DFS:优化HDFS小文件存储的解决方案
- Hadoop、Hbase、Spark环境部署与主机配置详解
- Kisso:加密会话Cookie实现的单点登录SSO
- OpenCV读取与拼接多幅图像教程
- QT实战:轻松生成与解析JSON数据