欢迎来到天天文库
浏览记录
ID:39551272
大小:28.00 KB
页数:4页
时间:2019-07-06
《Hibernate Criteria查询》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、查询所有数据:Criteriac=s.createCriteria(Student.class);Listlist=c.list();精确查询:c.add(Restrictions.eq("id",newInteger(22)));模糊查询:c.add(Restrictions.like("name","%2%"));条件查询:c.add(Restrictions.ge("id",newInteger(9)));范围查询:c.add(Restrictions.between("id",newInt
2、eger(5),newInteger(8)));逻辑语句:and:c.add(Restrictions.ge("id",newInteger(6)));c.add(Restrictions.le("age",newInteger(16)));or:c.add(Restrictions.or(Restrictions.ge("id",newInteger(6)),Restrictions.le("age",newInteger(16))));not:c.add(Restrictions.not(Re
3、strictions.ge("id",newInteger(6))));//分页c.setFirstResult(3);//从第几行开始取数据c.setMaxResults(3);//总共取多少行数据Listlist=c.list();排序:c.addOrder(Order.desc("id"));分组:c.setProjection(Projections.groupProperty("age"));查询的结果只有一个值时:Objectobj=c.uniqueResult();统计函数的使用:a
4、vg()rowCount()count()max()min()countDistinct()c.setProjection(Projections.avg("age"));在SQL语句中的多条件分组与统计功能,可以利用ProjectionList类来实现:Criteriac=session.createCriteria(User.class);ProjectionListprolist=Projections.projectionList();prolist.add(Projections.gro
5、upProperty("age"));prolist.add(Projections.rowCount());c.setProjection(prolist);通过以上代码,实现了对不同年龄人员数量的分组统计,当进行检索时,Hibernate会生成类似如下的SQL语句:Selectage,count(*)fromusergroupbyage;在Hibernate3中DetachedCriteria类的使用:构造常用的查询条件,需要的时候与session关联(与PreparedStatement类似
6、)DetachedCriteriadc=DetachedCriteria.forClass(User.class);dc.add(Expression.eq("name","zhaoxin"));dc.add(Expression.eq("sex","1"));Criteriac=dc.getExecutableCriteria(session);Iteratorit=c.list().iterator();注意:DetachedCriteria的生存周期与session实例无关,当需要进行检索时
7、,通过getExecutableCriteria(session)方法,与当前的Session实例关联并获得运行期的Criteria实例,完成检索。DetachedCriteria类实现子查询:DetachedCriteriadc=DetachedCriteria.forClass(User.class);dc.setProjection(Projections.avg("age"));Criteriac=session.createCriteria(User.class);c.add(Subqu
8、eries.propertyGt("age",dc));Listlist=c.list();当执行检索时Hibernate会生成类似如下的SQL语句:Select*fromuserwhereage>(selectavg(age)fromusergroupbyage);
此文档下载收益归作者所有