`
cuisuqiang
  • 浏览: 3935785 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
3feb66c0-2fb6-35ff-968a-5f5ec10ada43
Java研发技术指南
浏览量:3650303
社区版块
存档分类
最新评论

Hibernate的查询 标准(Criteria)查询 分页、单个记录、排序

    博客分类:
  • SSH
阅读更多

分页:

其实标准查询的分页很简单,在Criteria中提供了两个方法,setFirstResult方法和setMaxResults,一个是数据的开始位置0表示第一条记录,一个是返回的记录数。

 

public void searchByPropertys() {
	Session session = this.getSession();
	Criteria crit = session.createCriteria(Conft.class);
	crit.setFirstResult(0);
	crit.setMaxResults(10);
	List<Conft> list = crit.list();
	for(Conft conft : list){
		System.out.println(conft.getId());
	}
}

 

这样会返回数据库前十条记录!

 

返回一条记录:

Criteria接口的uniqueResult方法返回一个Object对象,如果没有查到数据则返回null。

public void searchByPropertys() {
	Session session = this.getSession();
	Criteria crit = session.createCriteria(Conft.class);
	crit.add(Restrictions.eq("id", 2)); // = 
	Conft conft = (Conft)crit.uniqueResult();
	System.out.println(conft.getId());
}

 

如果调用时返回的不是一条记录,会爆出异常!

 

排序:

Oder对象的asc和desc静态方法能满足这个需求

public void searchByPropertys() {
	Session session = this.getSession();
	Criteria crit = session.createCriteria(Conft.class);
	crit.addOrder(Order.desc("id"));
	List<Conft> list = crit.list();
	for(Conft conft : list){
		System.out.println(conft.getId());
	}
}

 

请您到ITEYE看我的原创:http://cuisuqiang.iteye.com

或支持我的个人博客,地址:http://www.javacui.com

 

分享到:
评论
2 楼 cuisuqiang 2012-05-10  
yxb1990 写道
分页还有一个总页数属性,要不你怎么知道分几页,
Long totalCount = (Long) criteria.setProjection(Projections.rowCount()).uniqueResult();

需要使用投影查询,查询完之后,还要原来取出来的的project set回去。具体可参考springside, 里面有个通用的分页类,LZ可以去看一下。

非常感谢!
1 楼 yxb1990 2012-05-10  
分页还有一个总页数属性,要不你怎么知道分几页,
Long totalCount = (Long) criteria.setProjection(Projections.rowCount()).uniqueResult();

需要使用投影查询,查询完之后,还要原来取出来的的project set回去。具体可参考springside, 里面有个通用的分页类,LZ可以去看一下。

相关推荐

Global site tag (gtag.js) - Google Analytics