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常用操作示例,包含详细注释说明,数据库初始化文件。使用和学习请参考:http://blog.csdn.net/daijin888888/article/details/51692942
Hibernate 提供了操纵对象和相应的 RDBMS 表中可用...Hibernate Session 接口提供了 createCriteria() 方法,可用于创建一个 Criteria 对象,使当您的应用程序执行一个标准查询时返回一个持久化对象的类的实例。
Hibernate 中 Criteria 的用法是 Hibernate 框架中的一种查询机制,它提供了灵活的查询方式,可以根据不同的条件进行查询。Criteria 查询机制主要包括 QBE(Query By Example)、QBC(Query By Criteria)和 HQL...
通过该源代码可以详细的了解hibernate的criteria的用法,有助于快速的帮助初学者建立hibernate中面向对象的查询,
使用 Hibernate Criteria && DetachedCriteria Queries演示Exists Clause非常简单的项目 安装 git clone https://github.com/RameshRM/hibernate-sample.git 跑步 mvn install 这是一个maven项目,依赖项是 ...
10.4.3. 条件查询(Criteria queries) 10.4.4. 使用原生SQL的查询 10.5. 修改持久对象 10.6. 修改脱管(Detached)对象 10.7. 自动状态检测 10.8. 删除持久对象 10.9. 在两个不同数据库间复制对象 10.10. ...
15. 条件查询(Criteria Queries); 16. Native SQL查询; 17. 过滤数据; 18. XML映射; 19. 提升性能; 20. 工具箱指南; 21. 示例:父子关系(Parent Child Relationships); 22. 示例:Weblog 应用程序; 23. 示例:复杂...
使用 Java 和 JUnit 测试的 JPA 2.1 示例 使用基本的 JPQL 语法 使用一对一表一对多多对多 使用 CriteriaQuery CriteryBuilder 使用@SqlResultMapping @ColumnResult @FieldResult
10.4.3. 条件查询(Criteria queries) 10.4.4. 使用原生SQL的查询 10.5. 修改持久对象 10.6. 修改脱管(Detached)对象 10.7. 自动状态检测 10.8. 删除持久对象 10.9. 在两个不同数据库间复制对象 10.10. ...
10.4.3. 条件查询(Criteria queries) 10.4.4. 使用原生SQL的查询 10.5. 修改持久对象 10.6. 修改脱管(Detached)对象 10.7. 自动状态检测 10.8. 删除持久对象 10.9. 在两个不同数据库间复制对象 10.10. ...
根据示例查询(Example queries) 13. 原生SQL查询 13.1. 创建一个基于SQL的Query 13.2. 别名和属性引用 13.3. 为SQL查询命名 14. 性能提升(Improving performance) 14.1. 理解集合的性能 ...
10.4.3. 条件查询(Criteria queries) 10.4.4. 使用原生SQL的查询 10.5. 修改持久对象 10.6. 修改脱管(Detached)对象 10.7. 自动状态检测 10.8. 删除持久对象 10.9. 在两个不同数据库间复制对象 10.10. ...
10.4.3. 条件查询(Criteria queries) 10.4.4. 使用原生SQL的查询 10.5. 修改持久对象 10.6. 修改脱管(Detached)对象 10.7. 自动状态检测 10.8. 删除持久对象 10.9. 在两个不同数据库间复制对象 10.10. Session刷出...
10.4.3. 条件查询(Criteria queries) 10.4.4. 使用原生SQL的查询 10.5. 修改持久对象 10.6. 修改脱管(Detached)对象 10.7. 自动状态检测 10.8. 删除持久对象 10.9. 在两个不同数据库间复制对象 10.10. Session刷出...
第 17 章 条件查询(Criteria Queries) 第 18 章 Native SQL 查询 第 19 章 过滤数据 第 20 章 XML 映射 第 21 章 提升性能 第 22 章 工具箱指南 第 23 章 Additional modules 第 24 章 ...
15. 条件查询(Criteria Queries) 15.1. 创建一个Criteria 实例 15.2. 限制结果集内容 15.3. 结果集排序 15.4. 关联 15.5. 动态关联抓取 15.6. 查询示例 15.7. 投影(Projections)、聚合(aggregation)和分组...
11.4.3. 条件查询(Criteria queries) 11.4.4. 使用原生SQL的查询 11.5. 修改持久对象 11.6. 修改脱管(Detached)对象 11.7. 自动状态检测 11.8. 删除持久对象 11.9. 在两个不同数据库间复制对象 11.10. Session...
10.4.3. 条件查询(Criteria queries) 10.4.4. 使用原生SQL的查询 10.5. 修改持久对象 10.6. 修改脱管(Detached)对象 10.7. 自动状态检测 10.8. 删除持久对象 10.9. 在两个不同数据库间复制对象 10.10. ...
Hibernate项目示例: 实体管理器 CriteriaBuilder 元模型 数据库 P6间谍 SLF4J
根据示例查询(Example queries) 13. 原生SQL查询 13.1. 创建一个基于SQL的Query 13.2. 别名和属性引用 13.3. 为SQL查询命名 14. 性能提升(Improving performance) 14.1. 理解集合的性能 ...