Criteria本身只是一个查询容器,具体的查询条件需要通过Criteria.add方法添加到Criteria实例中。
Criteria接口有很多重要的方法,如:
1、获取唯一结果的uniqueResult()
2、可实现分页的setFirstResult()和setMaxResult()方法
3、addOrder()排序方法
4、add()关联
第一步,创建一个Criteria实例
org.hibernate.Criteria接口表示特定持久类的一个查询。Session是Criteria实例的工厂。
Criteria c = Sessioin().createCriteria(Hrm.class);
c.setMaxResult(50);
第二步,org.hibernate.criterion.Restrictions类定义了获得某些内置Criterion类型的工厂方法。
c.add( Restrictions.like("name", "Fritz%") );
.add( Restrictions.or(Restrictions.eq( "age", new Integer(0) ),
Restrictions.isNull("age")) );
.add( Restrictions.in( "name", new String[]{"Fritz","Izi"}));
.add( Restrictions.ge("createDate",createDateF));
.add( Restrictions.le("createDate",createDateT));
.add( Restrictions.between("age",13,50));
c.addOrder( Order.asc("name"));
第三步,很重要,利用org.hibernate.criterion.Projections来增加查询字段。
ProjectionList projectionList = Projections.projectionList();
projectionList.add(Projections.property("name"));
projectionList.add(Projections.sum("age"));
projectionList.add(Projections.groupProperty("name"));
c.setProjection(projectionList); //别忘了加
List list = c.list();
以上几步等同于生成如下SQL: select name,sum(age) from hrm h where h.name like "Fritz%" or age = 0 and name in ("Fritz","Izi") and h.create_date >= createDateF and h.create_date <= createT and h.age between 13 and 50 group by h.name order by h.name.
总结,以上sql是错误的无法运行,在这里只是说明Criteria的用法,其封装后生成的sql语句是如此。
分享到:
相关推荐
- 封装:DAO类应封装具体的SQL查询和HQL(Hibernate Query Language)语句,避免在业务层暴露这些细节。 - 单一职责:每个DAO类应只负责一种类型的数据操作,如用户DAO只处理用户相关的操作。 - 可复用:设计通用的...
使用JDBC时,可以结合LIMIT和OFFSET子句(Oracle不支持LIMIT,但可以通过ROWNUM模拟)来实现分页,而在Hibernate中,可以使用Criteria API或HQL的`setFirstResult`和`setMaxResults`方法来实现相同的功能。...
在软件开发领域,尤其是...总的来说,当遇到类似问题时,开发者需要仔细检查SQL语句的语法和结构,同时评估是否可以通过调整查询策略、优化数据模型或利用其他工具来避免直接在Hibernate映射文件中使用复杂的子查询。
HQL是Hibernate特有的查询语言,类似SQL,但操作的是对象而非表,支持更丰富的查询功能,如关联查询、分页、排序等。 三、数据映射类型 3.1 映射类型的作用 映射类型用于将Java对象的属性与数据库表的列对应,实现...
在本篇“2023年Java相关课程系列笔记之十四Hibernate学习笔记”中,我们将深入探讨Java开发中常用的持久化框架——Hibernate。这个框架由梁建全老师主讲,旨在帮助开发者更高效、便捷地进行数据库操作,弥补JDBC在...
Hibernate基于POJO(Plain Old Java Object)设计,采用元数据来描述对象和数据库表的关系,实现了对象的持久化,同时引入了查询语言HQL和Criteria API,实现了数据库操作的面向对象化。 **二、Hibernate的基本使用...
在SSH分页中,我们通常利用Hibernate的Query或Criteria API来执行带有分页条件的SQL语句,获取指定范围的数据。 **分页实现步骤**: 1. **设计模型**:定义一个实体类,例如`Product`,并创建对应的Hibernate映射...
Hibernate支持多种数据库,具备强大的查询功能,包括HQL(Hibernate Query Language)和Criteria API。 Spring框架是Java企业级应用的核心框架,它提供了依赖注入(DI)和面向切面编程(AOP)等特性,简化了应用的...
6. **查询语言(HQL)**: Hibernate 查询语言(HQL)是 Hibernate 提供的面向对象的查询语言,类似于 SQL,但操作对象而非表。 **二、Hibernate 工作流程** 1. **初始化 Hibernate**: 加载配置文件,创建 ...
最大限度利用编译器减少编码错误的可能性 API设计和元数据模型(meta-model)的使用,使得常规的数据库查询都可以直接通过Criteria API来完成,无需使用任何JPQL/HQL/SQL。可以让避免用户犯一些语法、拼写等错误。...
这种方法占用内存较少,但实现较为复杂,需要预先知道总记录数,并且不同数据库的分页SQL写法可能不同。 第三种方法是介于前两者之间,预加载一定数量的页数据,存储在Session中,以减少数据库查询次数。这种方法在...
Spring Data 的主要优势在于极大简化了 JPA 的写法,开发者可以在几乎不编写具体实现的情况下实现对数据的访问和操作。 #### 二、Spring Data JPA与本地事务管理 在单一数据库环境中,通常采用本地事务管理。当...
- Hibernate框架允许使用HQL(Hibernate查询语言)或Criteria API来定义预定义的过滤器条件,对类或集合进行操作。 7. **网络延迟** - 网络延迟通常是指从发送数据包到接收响应的时间,包括发送时间、传播时间、...