Criteria本身只是一个查询容器,具体的查询条件需要通过Criteria.add方法添加到Criteria实例中。
Criteria接口有很多重要的方法,如:
1、获取唯一结果的uniqueResult()
2、可实现分页的setFirstResult()和setMaxResult()方法
3、addOrder()排序方法
4、add()关联
第一步,创建一个Criteria实例
org.hibernate.Criteria接口表示特定持久类的一个查询。Session是Criteria实例的工厂。
Criteria c = Sessioin().createCriteria(Hrm.class);
c.setMaxResult(50);
第二步,org.hibernate.criterion.Restrictions类定义了获得某些内置Criterion类型的工厂方法。
c.add( Restrictions.like("name", "Fritz%") );
.add( Restrictions.or(Restrictions.eq( "age", new Integer(0) ),
Restrictions.isNull("age")) );
.add( Restrictions.in( "name", new String[]{"Fritz","Izi"}));
.add( Restrictions.ge("createDate",createDateF));
.add( Restrictions.le("createDate",createDateT));
.add( Restrictions.between("age",13,50));
c.addOrder( Order.asc("name"));
第三步,很重要,利用org.hibernate.criterion.Projections来增加查询字段。
ProjectionList projectionList = Projections.projectionList();
projectionList.add(Projections.property("name"));
projectionList.add(Projections.sum("age"));
projectionList.add(Projections.groupProperty("name"));
c.setProjection(projectionList); //别忘了加
List list = c.list();
以上几步等同于生成如下SQL: select name,sum(age) from hrm h where h.name like "Fritz%" or age = 0 and name in ("Fritz","Izi") and h.create_date >= createDateF and h.create_date <= createT and h.age between 13 and 50 group by h.name order by h.name.
总结,以上sql是错误的无法运行,在这里只是说明Criteria的用法,其封装后生成的sql语句是如此。
分享到:
相关推荐
Hibernate中的查询:HQL、Criteria、原生SQl的Demo,希望可以帮助大家理解Hibernate查询。
Hibernate中关于Criteria查询条件的选择.doc
本文旨在为读者呈现不同的方式查询方式:HQL方式的查询、SQL原生态SQL方式的查询、以及Criteria方式的查询,拓展查询的不同实现思路,开阔视野、并涵盖了部分的Hibernate增删改的基本操作。
Hibernate中Criteria的完整用法
这个案例是根据分组查询,并且得到每组的条数,不懂得可以q我:1710086675,欢迎认识更多新朋友
Hibernate-Criteria 模糊查询
Criteria查询将数据查询条件封装成为一个对象,可以堪称是传统SQL的对象化表示。
Hibernate条件查询Criteria.docHibernate条件查询Criteria.doc
主要讲解Hibernate中的Criteria的认识
Hibernate中Criteria的完整用法 Criteria 是一个完全面向对象,可扩展的条件查询API,通过它完全不需要考虑数据库底层如何实现、SQL语句如何...
Hibernate-Criteria_模糊查询
Hibernate中Criteria的用法
Hibernate的Criteria用法总结Hibernate的Criteria用法总结
Hibernate中的Criteria连表查询,包括单表属性查询,多表内连,以及左外连接查询