org.hibernate.criterion.DetachedCriteria 是用来执行条件查询的.可以依据这个类,创建查询语句,然后传递给hibernate执行.
基本使用方法(1-3都是在action层设置)
1:创建 DetachedCriteria
DetachedCriteria detachedCriteria = DetachedCriteria.forClass(RightBasicEntity.class);
2:设置查询条件:
detachedCriteria.add(Restrictions.like("要查询的条件属性", "要匹配的条件"));
detachedCriteria.add(Restrictions.like("right_name", "%MainAction%"));
Restrictions类还有其它相对应的查询方法
3:设置查询排序:
detachedCriteria.addOrder(Order.desc("要排序的属性"));
Order类还有 Order.asc()
4:把detachedCriteria传递给DAO层
....传递过程略过
5:返回查询结果(DAO层):
return hibernateTemplate.findByCriteria(detachedCriteria);
使用 DetachedCriteria 的好处是创建查询条件不需要session的支持.在action层设置好查询条件后,传递给 DAO 层就可以获取结果.
一些其它信息:
设置查询的限制条数:
return hibernateTemplate.findByCriteria(detachedCriteria, firstResult, maxResults);
firstResult 起始ID //0 或者 通过分页函数计算,这个并不是真实的数据表内的ID(某个属性).
maxResults 最大查询限制条数
获取查询集的总条数:
detachedCriteria.setProjection(Projections.rowCount());
Long count = Long.parseLong(hibernateTemplate.findByCriteria(detachedCriteria).get(0).toString());
detachedCriteria.setProjection(null);
System.out.println(count);
参考:
http://brimstone.javaeye.com/blog/143864
http://brimstone.javaeye.com/blog/143867
http://blog.csdn.net/kjfcpua/archive/2009/06/21/4287248.aspx