千家信息网

Criteria查询语句的示例分析

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍了Criteria查询语句的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Criteria查询package
千家信息网最后更新 2026年11月01日Criteria查询语句的示例分析

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

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查询语句的示例分析"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

查询 语句 篇文章 示例 分析 条件 用户 高级 价值 例子 兴趣 同时 地址 更多 朋友 特性 知识 编带 范围 行业 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 新华互联网科技 广州万易互联网科技有限公司 互联网科技深圳 互联网科技的发展 北京互联网科技有限公司 金融科技与互联网金融 深圳艾佳互联网科技 多迪互联网科技有限公司 深圳互联网科技怎么样 金融科技与互联网金融相同和不同 互联网保险科技创业 卓翼科技产业互联网合作 群盈汇互联网科技有限公司 烟台灵鸽互联网科技有限公司 浙南科技城互联网大厦招聘 宇信科技在杭州互联网排第几 工业互联网科技创业 上海同邻互联网科技有限公司规模 青岛互联网科技园 东风日产互联网科技公司叫什么 耶加雪菲 伟宏互联网科技 互联网科技类展会 成都仁贤领冠互联网科技有限公司 汽车互联网创新科技园 广州市恰铎互联网科技有限公司 朱啸虎曾投资哪些互联网科技企业 抖集互联网科技技术咨询 安徽零酒互联网科技有限公司 网互联网络科技
0