Criteria查询语句的示例分析
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇文章主要介绍了Criteria查询语句的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Criteria查询package
千家信息网最后更新 2025年11月08日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安全错误
数据库的锁怎样保障安全
苏州学习软件开发公司有哪些
数据库92多表查询
汽车新能源网络技术
方城县网络安全检查
贵州高性能服务器厂家
任务管理器里面的服务器主机
无锡软件开发招聘
吕梁市网络安全保安支队
如何联系服务器的管理员
日本报刊数据库
放心的crm软件开发流程
vmware怎么连接网络安全
济南市联想服务器代理店面
服务器配置端口
网络安全法是法律吗
近3年数据库流行排行情况
管家婆工业生产管理软件开发商
在线直播服务器
湖北孝昌网络安全防线
服务器tcpip协议
数据库资源服务在哪
数据库如何用乘法
台湾服务器租赁
数据库查询语句 like
服务器电源厂商排行
麒麟信安服务器操作系统v3
数据库系统原理跟数据库系统概论
网络技术基础考题
jdbc数据库中文显示
完美平台怎么查服务器是哪个