Session s = HibernateSessionFactory.getSession();
Criteria c = s.createCriteria(PetInfo.class);
查询所有数据:
Criteria c = s.createCriteria(Student.class);
List list = c.list();
精确查询:
c.add(Restrictions.eq("id",new Integer(22)));
模糊查询:
c.add(Restrictions.like("name","%2%"));
条件查询:
c.add(Restrictions.ge("id",new Integer(9)));
范围查询:
c.add(Restrictions.between("id",new Integer(5),new Integer(8)));
逻辑语句:
and:
c.add(Restrictions.ge("id",new Integer(6)));
c.add(Restrictions.le("age",new Integer(16)));
or:
c.add(Restrictions.or(Restrictions.ge("id",new Integer(6)),Restrictions.le("age",new Integer(16))));
not:
c.add(Restrictions.not(Restrictions.ge("id",new Integer(6))));
//分页
c.setFirstResult(3); //从第几行开始取数据
c.setMaxResults(3); //总共取多少行数据
List list = c.list();
排序:
c.addOrder(Order.desc("id"));
分组:
c.setProjection(Projections.groupProperty("age"));
查询的结果只有一个值时:
Object obj = c.uniqueResult();
统计函数的使用:
avg() rowCount() count() max() min() countDistinct()
c.setProjection(Projections.avg("age"));
在SQL语句中的多条件分组与统计功能,
可以利用ProjectionList类来实现:
Criteria c=session.createCriteria(User.class);
ProjectionList prolist=Projections.projectionList();
prolist.add(Projections.groupProperty("age"));
prolist.add(Projections.rowCount());
c.setProjection(prolist);
通过以上代码,实现了对不同年龄人员数量的分组统计,
当进行检索时,Hibernate会生成类似如下的SQL语句:
Select age,count(*) from user group by age;
在Hibernate3中DetachedCriteria类的使用:
构造常用的查询条件,需要的时候与session关联
(与PreparedStatement类似)
DetachedCriteria dc= DetachedCriteria.forClass(User.class);
dc.add(Expression.eq("name","zhaoxin"));
dc.add(Expression.eq("sex","1"));
Criteria c=dc.getExecutableCriteria(session);
Iterator it=c.list().iterator();
注意:
DetachedCriteria的生存周期与session实例无关,
当需要进行检索时,通过getExecutableCriteria(session)方法,
与当前的Session实例关联并获得运行期的Criteria实例,
完成检索。
DetachedCriteria类实现子查询:
DetachedCriteria dc= DetachedCriteria.forClass(User.class);
dc.setProjection(Projections.avg("age"));
Criteria c=session.createCriteria(User.class);
c.add(Subqueries.propertyGt("age",dc));
List list=c.list();
当执行检索时Hibernate会生成类似如下的SQL语句:
Select * from user where age>
(select avg(age) from user group by age);
Hibernate Criteria查询
猜你喜欢
转载自quanwsx.iteye.com/blog/1044509
今日推荐
周排行