`
luxhua
  • 浏览: 86296 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Hibernate的Criteria查询示例

阅读更多
Criterai是一种完全面向对象的查询方法

package test;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.ProjectionList;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Property;
import org.hibernate.criterion.Restrictions;
import org.junit.Test;

import util.HbnUtil;
import entity.Classes;

public class TestCriteria {
	@Test
	public void testCriteria(){
		Session s = HbnUtil.getSession();
		try {
			s.beginTransaction();
			//创建查询对象Criteria
			Criteria criteria = s.createCriteria(Classes.class);
			//创建查询条件Criterion
			Criterion c1 = Property.forName("className")
								   .like("%0901%");
			Criterion c2 = Restrictions.gt("total", 40);
			Criterion c3 = Restrictions.isNotNull("openDate");
			
			//设置查询条件c1,c2为或者的关系,之后再与c3 并且的关系
			criteria.add(Restrictions.and(Restrictions.or(c1, c2),c3));
			//查询结果按班级名称升序排列
			criteria.addOrder(Order.asc("className"));
			
			//执行查询
			List<Classes> classes = criteria.list();
			for (Classes c:classes){
				System.out.println("满足条件的班级:"+c.getClassName());
			}
			s.getTransaction().commit();
		} catch (HibernateException e) {
			s.getTransaction().rollback();
			e.printStackTrace();
		} finally{
			HbnUtil.closeSession(s);
		}
	}
	
	@Test
	public void testCriteriaProjection(){
		Session s = HbnUtil.getSession();
		try {
			s.beginTransaction();
			//创建查询对象Criteria
			Criteria criteria = s.createCriteria(Classes.class);
			criteria.setProjection(Projections.count("total"));
			
			Criterion c = Property.forName("className").like("%0901%");
			criteria.add(c);
			
			List<Integer> ret = criteria.list();
			for (Integer o:ret){
				System.out.println("满足条件的查询结果:"+o);
			}
			s.getTransaction().commit();
		} catch (HibernateException e) {
			s.getTransaction().rollback();
			e.printStackTrace();
		} finally{
			HbnUtil.closeSession(s);
		}
	}
	
	@Test
	public void testCriteriaProjectionList(){
		Session s = HbnUtil.getSession();
		try {
			s.beginTransaction();
			//创建查询对象Criteria
			Criteria criteria = s.createCriteria(Classes.class);
			
			ProjectionList pl = Projections.projectionList();
			pl.add(Projections.min("total"));
			pl.add(Projections.sum("total"));
			criteria.setProjection(pl);
			
			Criterion c = Property.forName("className").like("%0901%");
			criteria.add(c);
			
			Object[] ret = (Object[])criteria.uniqueResult();
			System.out.println("最少人数:"+ret[0]);
			System.out.println("所有人数:"+ret[1]);
			s.getTransaction().commit();
		} catch (HibernateException e) {
			s.getTransaction().rollback();
			e.printStackTrace();
		} finally{
			HbnUtil.closeSession(s);
		}
	}
}
分享到:
评论

相关推荐

    Hibernate常用操作示例

    Hibernate常用操作示例,包含详细注释说明,数据库初始化文件。使用和学习请参考:http://blog.csdn.net/daijin888888/article/details/51692942

    Hibernate Criteria用法大全.docx

    Hibernate 提供了操纵对象和相应的 RDBMS 表中可用...Hibernate Session 接口提供了 createCriteria() 方法,可用于创建一个 Criteria 对象,使当您的应用程序执行一个标准查询时返回一个持久化对象的类的实例。

    Hibernate中Criteria的用法

    Hibernate 中 Criteria 的用法是 Hibernate 框架中的一种查询机制,它提供了灵活的查询方式,可以根据不同的条件进行查询。Criteria 查询机制主要包括 QBE(Query By Example)、QBC(Query By Criteria)和 HQL...

    关联映射hibernate的criteria的用法

    通过该源代码可以详细的了解hibernate的criteria的用法,有助于快速的帮助初学者建立hibernate中面向对象的查询,

    hibernate-sample:示例 Hibernate 项目以显示 Exists 子句的用法

    使用 Hibernate Criteria && DetachedCriteria Queries演示Exists Clause非常简单的项目 安装 git clone https://github.com/RameshRM/hibernate-sample.git 跑步 mvn install 这是一个maven项目,依赖项是 ...

    Hibernate+中文文档

    10.4.3. 条件查询(Criteria queries) 10.4.4. 使用原生SQL的查询 10.5. 修改持久对象 10.6. 修改脱管(Detached)对象 10.7. 自动状态检测 10.8. 删除持久对象 10.9. 在两个不同数据库间复制对象 10.10. ...

    Hibernate框架参考文档

    15. 条件查询(Criteria Queries); 16. Native SQL查询; 17. 过滤数据; 18. XML映射; 19. 提升性能; 20. 工具箱指南; 21. 示例:父子关系(Parent Child Relationships); 22. 示例:Weblog 应用程序; 23. 示例:复杂...

    lessons-JPA:使用 Hibernate 的 JPA 示例

    使用 Java 和 JUnit 测试的 JPA 2.1 示例 使用基本的 JPQL 语法 使用一对一表一对多多对多 使用 CriteriaQuery CriteryBuilder 使用@SqlResultMapping @ColumnResult @FieldResult

    hibernate3.2中文文档(chm格式)

    10.4.3. 条件查询(Criteria queries) 10.4.4. 使用原生SQL的查询 10.5. 修改持久对象 10.6. 修改脱管(Detached)对象 10.7. 自动状态检测 10.8. 删除持久对象 10.9. 在两个不同数据库间复制对象 10.10. ...

    HibernateAPI中文版.chm

    10.4.3. 条件查询(Criteria queries) 10.4.4. 使用原生SQL的查询 10.5. 修改持久对象 10.6. 修改脱管(Detached)对象 10.7. 自动状态检测 10.8. 删除持久对象 10.9. 在两个不同数据库间复制对象 10.10. ...

    hibernate 教程

    根据示例查询(Example queries) 13. 原生SQL查询 13.1. 创建一个基于SQL的Query 13.2. 别名和属性引用 13.3. 为SQL查询命名 14. 性能提升(Improving performance) 14.1. 理解集合的性能 ...

    Hibernate中文详细学习文档

    10.4.3. 条件查询(Criteria queries) 10.4.4. 使用原生SQL的查询 10.5. 修改持久对象 10.6. 修改脱管(Detached)对象 10.7. 自动状态检测 10.8. 删除持久对象 10.9. 在两个不同数据库间复制对象 10.10. ...

    最全Hibernate 参考文档

    10.4.3. 条件查询(Criteria queries) 10.4.4. 使用原生SQL的查询 10.5. 修改持久对象 10.6. 修改脱管(Detached)对象 10.7. 自动状态检测 10.8. 删除持久对象 10.9. 在两个不同数据库间复制对象 10.10. Session刷出...

    Hibernate 中文 html 帮助文档

    10.4.3. 条件查询(Criteria queries) 10.4.4. 使用原生SQL的查询 10.5. 修改持久对象 10.6. 修改脱管(Detached)对象 10.7. 自动状态检测 10.8. 删除持久对象 10.9. 在两个不同数据库间复制对象 10.10. Session刷出...

    Hibernate 3.6.0.Final Reference PDF 手册

    第 17 章 条件查询(Criteria Queries) 第 18 章 Native SQL 查询 第 19 章 过滤数据 第 20 章 XML 映射 第 21 章 提升性能 第 22 章 工具箱指南 第 23 章 Additional modules 第 24 章 ...

    hibernate 体系结构与配置 参考文档(html)

    15. 条件查询(Criteria Queries) 15.1. 创建一个Criteria 实例 15.2. 限制结果集内容 15.3. 结果集排序 15.4. 关联 15.5. 动态关联抓取 15.6. 查询示例 15.7. 投影(Projections)、聚合(aggregation)和分组...

    Hibernate教程

    11.4.3. 条件查询(Criteria queries) 11.4.4. 使用原生SQL的查询 11.5. 修改持久对象 11.6. 修改脱管(Detached)对象 11.7. 自动状态检测 11.8. 删除持久对象 11.9. 在两个不同数据库间复制对象 11.10. Session...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    10.4.3. 条件查询(Criteria queries) 10.4.4. 使用原生SQL的查询 10.5. 修改持久对象 10.6. 修改脱管(Detached)对象 10.7. 自动状态检测 10.8. 删除持久对象 10.9. 在两个不同数据库间复制对象 10.10. ...

    hibernate-criteria-builder-p6spy

    Hibernate项目示例: 实体管理器 CriteriaBuilder 元模型 数据库 P6间谍 SLF4J

    hibernate

    根据示例查询(Example queries) 13. 原生SQL查询 13.1. 创建一个基于SQL的Query 13.2. 别名和属性引用 13.3. 为SQL查询命名 14. 性能提升(Improving performance) 14.1. 理解集合的性能 ...

Global site tag (gtag.js) - Google Analytics