Hibernate Criteria查询

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

查询所有数据:
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);。

相关文档
最新文档