Restrictions的部分用法

来源:互联网 发布:破解qq悄悄话的软件 编辑:程序博客网 时间:2024/05/16 14:54

方法说明

Restrictions.eq 等于

Restrictions.allEq 使用Map,使用key/value进行多个等于的比对

Restrictions.gt 大于 >

Restrictions.ge 大于等于 >=

Restrictions.lt 小于 <

Restrictions.le 小于等于 <=

Restrictions.between 对应SQL的BETWEEN子句

Restrictions.like 对应SQL的LIKE子句

Restrictions.in 对应SQL的in子句

Restrictions.and and关係

Restrictions.or or关係

 

criteria.addOrder(Order.asc("age"));排序

 

criteria.setFirstResult(51);
criteria.setMaxResults(50);
分页

 

org.hibernate.criterion.Projectionsavg()rowCount()count()max()min() countDistinct()等方法,再搭配CriteriasetProjection()方法加入条件设定

criteria.setProjection(Projections.avg("age"));age的平均值

 

criteria.setProjection(Projections.groupProperty("age"));分组

 

ProjectionList projectionList = Projections.projectionList();
projectionList.add(Projections.groupProperty("age"));
projectionList.add(Projections.rowCount());
Criteria criteria = session.createCriteria(User.class);
criteria.setProjection(projectionList);
List users = criteria.list();    
同时使用分组和统计功能

 

Criteria criteria = session.createCriteria(User.class);
criteria.add(Example.create(user));
使用已知的实体查询

 

criteria.add(Restrictions.sqlRestriction("User.name LIKE(?)", "cater%", Hibernate.STRING));sql传参查询

 

Integer[] ages = {new Integer(20), new Integer(40)};
Type[] types = {Hibernate.INTEGER, Hibernate.INTEGER};
criteria.add(Restrictions.sqlRestriction("User.age BETWEEN (?) AND(?)", ages, types));sql
多个条件查询Between查询

 

 

 

使用DetchedCriteria
Criteria
Session绑定,其生命週期跟随着Session结束而结束,使用Criteria时进行查询时,每次都要于执行时期动态建立物件,并加入各种查询条件,随着Session的回收,Criteria也跟着回收。
为了能够重複使用Criteria物件,在Hibernate 3中新增了org.hibernate.criterion.DetchedCriteria,您可以先建立DetchedCriteria实例,并加入各种查询条件,并于需要查询时再与Session绑定,获得一个绑定SessionCriteria物件,例如:
//
先建立DetchedCriteria物件
DetachedCriteria detchedCriteria = DetachedCriteria.forClass(User.class);
//
加入查询条件
detchedCriteria.add(Restrictions.ge("age",new Integer(25)));
Session session = sessionFactory.openSession();
//
绑定Session并返回一个Criteria实例
Criteria criteria = detchedCriteria.getExecutableCriteria(session);
List users = criteria.list();

0 0
原创粉丝点击