hibernate初学6之查询方式
来源:互联网 发布:win10蓝屏修复软件 编辑:程序博客网 时间:2024/06/14 05:18
HQL(hibernate Query Language) —一种面向对象的查询。
HQL对关键字的大小不区分,但是对查询的对象就要区分大小写。在sql中,如果要加条件的话就是列,在HQL中,条件就是对象的属性,而且要给对象起别名。
1.hibernate 一般查询
1)限制查询起始与结果
Query query=session.createQuery("from News"); query.setFirstResult(1); query.setMaxResults(3); List list=query.list(); for(int i=0;i<list.size();i++) { News news=(News) list.get(i); System.out.println(news.getNewsID()+":"+news.getName()+":"+news.getPhone()); }
2)条件查询
Query query=session.createQuery("from News news where news.name='11'"); List list=query.list(); for(int i=0;i<list.size();i++) { News news=(News) list.get(i); System.out.println(news.getNewsID()+":"+news.getName()+":"+news.getPhone()); }
news为News对象的别名,name不是数据表中的字段,而是cus对象中的属性name
2.取表中的部分列
1)单一属性查询,集合中是对象而不是表的实例
List names=session.createQuery("select name from News").list(); for(int i=0;i<names.size();i++) { String name= (String) names.get(i); System.out.println(name); }
2)多个属性的查询,使用对象数组
List dept=session.createQuery("select deptno,dname from Dept").list(); for(int i=0;i<dept.size();i++) { Object[] object= (Object[]) dept.get(i); System.out.println(object[0]+":"+object[1]);
这里注意,查询多个属性,其集合元素是对象数组,数组元素的类型,跟实体类的属性的类型相关。
3)多个属性的查询使用List集合存储部分列
Query query=session.createQuery("select new list(news.name,news.phone) from News news"); List list=query.list(); for(int i=0;i<list.size();i++) { List temp=(List) list.get(i); System.out.println(temp.get(0)+":"+temp.get(1)); }```这种方法查询得到的结果集合中的存储是表的实例。所以temp.get(0)对应news.name 4)使用Map集合存储部门列<div class="se-preview-section-delimiter"></div>
这里写代码片
“`
Query query=session.createQuery("select new map(news.name,news.phone) from News news"); List list=query.list(); for(int i=0;i<list.size();i++) { Map temp= (Map) list.get(i); System.out.println(temp.get("11")); }
这里也是表的实例,以Map的形式存储,其中的Key为数据记录中的键码
由于内连接与外连接在此处实现起来比较麻烦,所以此处不给出代码,读者有兴趣可以自行查阅资料。
3.带参数的查询
1)?作为参数
Query query=session.createQuery("from News news where news.name=?"); query.setParameter(0, "11"); List list=query.list(); for(int i=0;i<list.size();i++) { News news=(News) list.get(i); System.out.println(news.getNewsID()+":"+news.getName()+":"+news.getPhone()); }
2)参数名称
Query query=session.createQuery("from News news where news.name=:name"); query.setParameter("name", "11"); List list=query.list(); for(int i=0;i<list.size();i++) { News news=(News) list.get(i); System.out.println(news.getNewsID()+":"+news.getName()+":"+news.getPhone()); }
3)条件查询,使用?方式穿参
Query query=session.createQuery("from News news where news.name LIKE ?"); query.setParameter(0, "%1%"); List list=query.list(); for(int i=0;i<list.size();i++) { News news=(News) list.get(i); System.out.println(news.getNewsID()+":"+news.getName()+":"+news.getPhone()); }
也可以使用 :参数的形式与上面极其类似,这是不再赘述
4嵌入原生sql测试
SQLQuery sqlquary=session.createSQLQuery("select * from News"); List news=sqlquary.list(); for(Iterator iter =news.iterator();iter.hasNext();) { Object[] obj=(Object[]) iter.next(); System.out.println(obj[0]+"---------------------"+obj[1]+"------"+obj[2]); }
这里不再是HQL了,是原生的sql语句,所以得到的查询结果对象不再是Query而是SQLQuery
阅读全文
0 0
- hibernate初学6之查询方式
- Hibernate 6种查询方式
- Hibernate之HQL检索(查询)方式
- Hibernate之QBC检索(查询)方式
- Hibernate之SQL检索(查询)方式
- Hibernate初学之CURD
- Hibernate初学之优缺点
- hibernate初学之初解篇一
- Hibernate中6种查询方式
- hibernate的6种查询方式
- Hibernate 6 种方式实现查询
- 小结Hibernate的查询方式(6种)
- Hibernate的查询方式
- hibernate查询方式举例
- hibernate QBC查询方式
- hibernate的查询方式
- hibernate的查询方式
- Hibernate的查询方式
- poj 2080 Calendar
- 面试题-音量控制
- Shopping商店购物
- poj 2402 Palindrome Numbers
- 又见GCD(GCD)【HDU】-2504
- hibernate初学6之查询方式
- poj 2418 Hardwood Species
- 字符串时间日期转换小结
- Python 环境搭建
- 合并两个长度分别为m和n的有序表,最坏情况下需要比较m+n-1次
- CEOI 2004 two 锯木厂(cogs)(斜率优化)
- 泛型方法
- Expression Expand
- hibernate初学7 补充