Hibernate对查询结果的简单处理

来源:互联网 发布:数控机床加工仿真软件 编辑:程序博客网 时间:2024/04/30 14:17
1.对查询结果进行排序处理
HQL和QBC都支持对查询结果排序。HQL采用关键字order by 关键字对查询结果排序,而QBC 采用org.hibernate.criterion.Order类对查询记过排序
结果按姓名升序排列
//HQL检索方式
Query query = session.createQuery("from Customer c order by c.name");//默认为升序“asc”
//多个条件用Query query = session.createQuery("from Customer c order by c.name asc,c.age desc");

//QBC检索方式
Criteria criteria = session.createCriteria(Customer.class);
criteria.addOrder(Order.asc("name"));
//多个条件加上criteria.addOrder(Order.desc("age"));
2.对查询结果进行分页处理
当进行批量查询数据时,如果查询的数量很大时,会导致无法再用户终端的单个页面上显示所有的查询结果,此时需要对查询结果分页显示。Query和Criteria接口都提供了用于分页获取查询结果的方法。
setFirstResult(int firstResult):设定从哪一个对象开始检索,参数表示其实位置,默认 0
setMaxresult(int maxResults):设定以纯最多检索出的对象数目,默认检索出所有的对象。
(1)Query的用法
Query query  = session.creatQuery("from Customer c order by c.name asc");
query.setFirstResult(0);
query.setMaxResults(10);
List list = query.list();
(2)QBC检索方式
Criteria criteria = session.createCriteria(Customer.class);
criteria.addOrder(Order.asc("name"));
query.setFirstResult(0);
query.setMaxResults(10);
List list = query.list();
3.检索单个对象:uniqueResult()方法
(1)Query和Criteria接口都提供了一下list()和uniqueResult()方发,执行查询语句,并返回查询结果的方法。
List()方法:返回一个List类型的查询结果,在List集合中存放了所有满足查询条件的持久化对象
uniqueResult()方法:返回单个对象
在某些情况下,如果希望检索出一个对象,可以先调用setMaxResults(1)方法,把最大检索数目设为1;接下来调用uniqueResult()方法,该方法返回一个Object的对象
//采用HQL检索方式
Customer customer = (Customer)session.creatQuery("from Customer c order by c.name asc")
   .setMaxResults(1)
.uniqueResult();
//采用QBC检索方式
Customer customer = (Customer) session.createCriteria(Customer.class)
.addOrder(Order.asc("name"))
.setMaxResults(1)
.uniqueResult();
(2)当我们明确知道查询结果只包含一个对象时,可以不调用setMaxResults(1)方法
//采用HQL检索方式
Customer customer = (Customer)session.creatQuery("from Customer c where c.id=1")
.uniqueResult();
   注意:当查询结果包含多个对象时,但没有调用setMaxResults(1),会抛出异常:NonUniqueResultException,
0 0
原创粉丝点击