Criteria查询语句的示例分析
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章主要介绍了Criteria查询语句的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Criteria查询package
千家信息网最后更新 2025年01月20日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安全错误
数据库的锁怎样保障安全
浙江安防时间频率同步服务器
查找不同数据库
上海蓝狙互联网科技公司
做软件开发私活多吗
美萍会员系统v90数据库
服务器阵列卡电池接口定义
东北棋牌软件开发公司
php 数据库不存在
中队主题活动记录网络安全
数据库专业以后做什么
河北会计软件开发诚信服务
河南省网络安全攻防实战演练
基因网络技术进展如何
小学生网络安全作文两百字
淘宝服务器主图
常州网络技术支持报价
云南省信息网络安全报警服务
魔兽数据库沐日皮外套
金山区营销软件开发代理品牌
电力机车视频软件开发
专业网络技术培训
获取数据库某张表所有数据
河北网络技术服务创新服务
服务器怎么区分不同的客户端
服务器文件管理器怎么打开
软件开发工程师华为od项目
云翼计划服务器库存不足
服务器能带多少兆宽带
网络安全专业课程难吗
电脑服务器名称会变吗