Criteria查询语句的示例分析

这篇文章主要介绍了Criteria查询语句的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

主要从事网页设计、PC网站建设(电脑版网站建设)、wap网站建设(手机版网站建设)、响应式网站设计、程序开发、微网站、小程序设计等,凭借多年来在互联网的打拼,我们在互联网网站建设行业积累了丰富的成都做网站、网站设计、外贸营销网站建设、网络营销经验,集策划、开发、设计、营销、管理等多方位专业化运作于一体,具备承接不同规模与类型的建设项目的能力。

Criteria查询

package com.shiryu.otm;   import java.util.Iterator;  import java.util.List;   import org.hibernate.Criteria;  import org.hibernate.Session;  import org.hibernate.SessionFactory;  import org.hibernate.Transaction;  import org.hibernate.cfg.Configuration;  import org.hibernate.criterion.DetachedCriteria;  import org.hibernate.criterion.Expression;  import org.hibernate.criterion.Order;  import org.hibernate.criterion.Projections;  import org.hibernate.criterion.Subqueries;   public class Test2 {      public static void main(String args[]) {          SessionFactory factory = new Configuration().configure().buildSessionFactory();          Session session = factory.openSession();          Transaction tr = session.beginTransaction();           // Criteria查询语句的补充          // 一、复合查询          // 在这个一对多的例子中。我们使用复合查询,查询所有用户及其地址。          // Criteria criteria = session.createCriteria(User.class);          // List list = criteria.list();          //          // for (int i = 0; i <  list.size(); i++) {          // User user = (User) list.get(i);          // System.out.println("\t user:"+i+" name is:" + user.getName());          //                      // Set addrSet = user.getAddresses();          // Iterator it = addrSet.iterator();          // while(it.hasNext()){          // Address addr = (Address)it.next();          // System.out.println("\t\t user:"+i+" address is:"+addr.getAddress());          // }          // }           // 通过Criteria查询条件,我们可以查询位于上海的用户          // Criteria criteria = session.createCriteria(User.class);          //          // Criteria addCriteria =          // criteria.createCriteria("addresses");//这里addresses和User类对应          // addCriteria.add(Expression.like("address",          // "%shanghai%"));//这里构造新的Criteria查询过滤条件          // List list = criteria.list();          //          // for (int i = 0; i <  list.size(); i++) {          // User user = (User) list.get(i);          // System.out.println("\t user:" + i + " name is:" + user.getName());          //          // Set addrSet = user.getAddresses();          // Iterator it = addrSet.iterator();          // while (it.hasNext()) {          // Address addr = (Address) it.next();          // System.out.println("\t\t user:" + i + " address is:"          // + addr.getAddress());          // }          // }           /*          * 二、DetachedCriteria的使用 hibernate2 中critria          * 生命周期位于宿主Session生命周期之内,session创建criteria实例,Session被销毁,critria实例也随之失效          * 这很大程度上限制了criteria的重用hibernate3 中提供了DetachedCriteria          * 它可以脱离Session实例独立存在,我们可以把通用的criteria查询条件进行抽离,更好的实现代码重用          */          DetachedCriteria deCriteria = DetachedCriteria.forClass(User.class);          deCriteria.add(Expression.eq("name", "zhaiyu"));          deCriteria.add(Expression.eq("age", new Integer(21)));           Criteria criteria = deCriteria.getExecutableCriteria(session);// 在其需要的时候与session进行绑定          Iterator it = criteria.list().iterator();          while (it.hasNext()) {              User user = (User) it.next();              System.out.println(user.getName());          }           /*          * DetachedCriteria 也可以用于子查询表达 下例返回了年龄超过了平均值的用户记录          */         DetachedCriteria avgAge = DetachedCriteria.forClass(User.class);          avgAge.setProjection(Projections.avg("age"));           Criteria criteria2 = session.createCriteria(User.class);          criteria2.add(Subqueries.propertyGt("age", avgAge));           List list = criteria2.list();          // 我们可以将DetachedCriteria纳入查询表达式 :select ... from User where age > (select          // avg(age) from User)          // (select avg(age) from User) 由DetachedCriteria avgAge描述           /* 三、Criteria查询语句的高级特性 */         // 限定返回记录范围          Criteria criteria3 = session.createCriteria(User.class);          // 限定从第100条开始的20条记录          criteria3.setFirstResult(100);          criteria3.setMaxResults(20);           // 对记录进行排序          Criteria criteria4 = session.createCriteria(User.class);          criteria4.add(Expression.eq("id", new Integer(2)));          criteria4.addOrder(Order.asc("name"));          criteria4.addOrder(Order.desc("id"));           /* Criteria分组与统计 */         Criteria criteria5 = session.createCriteria(User.class);          criteria5.setProjection(Projections.groupProperty("age"));           Iterator it3 = criteria5.list().iterator();          while (it.hasNext()) {              System.out.println(it.next());          }      }  }

感谢你能够认真阅读完这篇文章,希望小编分享的“Criteria查询语句的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,更多相关知识等着你来学习!


标题名称:Criteria查询语句的示例分析
转载注明:http://hbruida.cn/article/pgijis.html