- 浏览: 455744 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
飞天奔月:
我来个简单点的代码 使用 LinkedHashSetpubli ...
ArrayList去重 -
飞天奔月:
public static <T> List< ...
ArrayList去重 -
aaron7524:
事务隔离级别 -
月陨殇:
wlh269 写道rswh110 写道lz内容写的不错,就是略 ...
事务隔离级别 -
lnx1824:
我的更奇怪,在本地静态的可以,放jetty里的页面后就不然,都 ...
JS得到上传图片尺寸
连接查询(重要)
* 内连接
* 外连接(左连接/右连接)
参见:JoinQueryTest.java
内连接有三种:inner join ,join,“=”
* 内连接
* 外连接(左连接/右连接)
参见:JoinQueryTest.java
内连接有三种:inner join ,join,“=”
package com.wlh.hibernate; import java.util.Iterator; import java.util.List; import junit.framework.TestCase; import org.hibernate.Session; public class JoinQueryTest extends TestCase{ /** * 内联结 */ public void testQuery1() { Session session = null; try { session = HibernateUtils.getSession(); session.beginTransaction(); //====关键字join==========// List students=session.createQuery("select s.name ,c.name from Student s join s.classes c").list(); for(Iterator iter=students.iterator();iter.hasNext();){ Object [] o=(Object [])iter.next(); System.out.println("id="+o[0]+",o[1]"+o[0]); } session.getTransaction().commit(); }catch(Exception e) { e.printStackTrace(); session.getTransaction().rollback(); }finally { HibernateUtils.closeSession(session); } } /** * 内联结 */ public void testQuery2() { Session session = null; try { session = HibernateUtils.getSession(); session.beginTransaction(); //=======关键字inner join 默认就是内连接,所以inner可以加上,也可以省略======// List students=session.createQuery("select s.name, c.name from Student s inner join s.classes c").list(); for(Iterator iter=students.iterator();iter.hasNext();){ Object [] o=(Object [])iter.next(); System.out.println("id="+o[0]+",o[1]"+o[0]); } session.getTransaction().commit(); }catch(Exception e) { e.printStackTrace(); session.getTransaction().rollback(); }finally { HibernateUtils.closeSession(session); } } /** * 内联结 */ public void testQuery3() { Session session = null; try { session = HibernateUtils.getSession(); session.beginTransaction(); //===========用"="实现内联===========// List students=session.createQuery("select s.name ,c.name from Student s ,Classes c where s.classes.id=c.id").list(); for(Iterator iter=students.iterator();iter.hasNext();){ Object [] o=(Object [])iter.next(); System.out.println("id="+o[0]+",o[1]"+o[0]); } session.getTransaction().commit(); }catch(Exception e) { e.printStackTrace(); session.getTransaction().rollback(); }finally { HibernateUtils.closeSession(session); } } [b][color=red]外联接:能够查出2个表之间不相互关联的记录[/color] [/b]
/**
* 外联结
*/
public void testQuery4() {
Session session = null;
try {
session = HibernateUtils.getSession();
session.beginTransaction();
//查询出所有的学生(包括没有班级的学生)
List students=session.createQuery("select s.name ,c.name from Student s left join s.classes c").list();
for(Iterator iter=students.iterator();iter.hasNext();){
Object [] o=(Object [])iter.next();
System.out.println("id="+o[0]+",o[1]="+o[1]);
}
session.getTransaction().commit();
}catch(Exception e) {
e.printStackTrace();
session.getTransaction().rollback();
}finally {
HibernateUtils.closeSession(session);
}
}
/**
* 外联结
*/
public void testQuery5() {
Session session = null;
try {
session = HibernateUtils.getSession();
session.beginTransaction();
//查询出所有的班级,(包括没有学生的班级)
List students=session.createQuery("select s.name ,c.name from Student s right join s.classes c").list();
for(Iterator iter=students.iterator();iter.hasNext();){
Object [] o=(Object [])iter.next();
System.out.println("id="+o[0]+",o[1]="+o[1]);
}
session.getTransaction().commit();
}catch(Exception e) {
e.printStackTrace();
session.getTransaction().rollback();
}finally {
HibernateUtils.closeSession(session);
}
}
}
发表评论
-
java开发实战视频详解
2017-07-02 08:09 510java开发实战视频详解 链接: http://pan.bai ... -
什么样的数据适合存放到第二级缓存中
2009-04-11 17:15 1708(一)Hibernate的二级缓存策略的一般过程如下: 1) ... -
hibernate二级缓存攻略
2009-04-10 18:13 969http://www.iteye.com/topic/1890 ... -
关于hibernate缓存的问题
2009-04-10 18:12 10351. 关于hibernate缓 ... -
get方法和load方法区别
2009-04-03 18:38 1371hibernate中get方法和load方法的根本区别在于:如 ... -
Hibernate性能调优(重点理解)
2009-03-02 12:48 1258一。 inverse = ? inv ... -
hibernate查询缓存
2009-03-02 11:17 3753hibernate查询缓存 查询缓存是缓存普通属性结果集 ... -
浅谈hibernate性能优化的几点建议
2009-02-21 11:15 998浅谈hibernate性能优化的几点建议 1、针对orac ... -
Hibernate抓取策略
2009-02-17 12:37 1352hibernate抓取策略(单端代理的批量抓取) 保持< ... -
Hibernate二级缓存的使用
2009-02-17 12:22 10281.加入ehcase.xml文件; 2.在配置文件中加入如下代 ... -
Hibernate一级缓存
2009-02-03 02:57 904一级缓存生命周期很短,它session的生命周期一致,一级缓存 ... -
HQL (十) 统计查询
2009-02-02 18:28 2336统计查询(重要) 参见:StatQueryTest.java ... -
HQL (八) 对象导航查询
2009-02-02 13:17 2099对象导航查询,在hql中采用.进行导航(重要) 参见:Obj ... -
HQL (七) 分页查询
2009-02-02 13:05 1179分页查询(重要) * setFirstResult(),数据 ... -
HQL (六) 查询过滤器
2009-02-02 12:22 1841查询过滤器 设置了查 ... -
HQL (五) 外置命名查询(sql语句单独保存起来)
2009-02-02 12:04 2285外置命名查询 * 在要查询对象对应的映射文件(这里是stud ... -
HQL (四) 原生sql查询
2009-02-02 11:27 1848hibernate也支持直接sql进行查询 参见:SqlQu ... -
HQL (三) 条件查询
2009-02-02 11:13 2574条件查询(重要) * 可以采用拼字符串的方式传递参数 * ... -
HQL (二) 实体对象查询
2009-02-02 11:05 1550实体对象查询(重要) * N+1问题,在默认情况下 ... -
HQL (一) 简单属性查询
2009-02-02 01:13 1917简单属性查询(重要) * 单一属性查询,返回结果集是属性列表 ...
相关推荐
### HQL连接查询和注解使用总结 #### HQL连接查询概述 HQL(Hibernate Query Language)是一种面向对象的查询语言,它允许开发者以一种更自然的方式查询对象,而不是直接查询底层数据库表。HQL支持多种连接查询...
HQL支持多种查询方式,包括单表查询、多表查询、连接查询等。其中,多表查询是处理复杂数据关系的关键技术,它允许开发者在一个查询语句中同时操作多个表,从而提高数据处理的效率和查询的灵活性。多表查询通常涉及...
Hibernate HQL关联查询遵循了SQL中连接查询的概念,但在语法上有所区别,使其更符合面向对象编程的习惯。Hibernate支持以下几种连接查询方式: 1. **内连接(Inner Join)**:`INNER JOIN` 或 `JOIN` ```java ...
### HQL连接查询详解 #### 一、HQL连接查询概述 在开发过程中,当我们需要从数据库中的多个表中获取数据时,经常会用到连接查询(Join Query)。HQL(Hibernate Query Language)作为Hibernate框架提供的查询语言...
### HQL查询及语法详解 #### 一、HQL简介 HQL,全称为Hibernate Query Language,是Hibernate框架提供的一种面向对象的查询语言。它基于SQL标准,但更加强调对象模型,支持Java中的对象关系映射(ORM),能够处理...
SSH笔记-HQL查询(基于位置参数查询、基于命名参数查询、分页查询、命名查询、投影查询报表查询、内/迫切内/左外/迫切左外连接查询)、QBC(QBC检索查询、统计查询、排序查询、HQL操作数据库)、本地SQL查询
HQL支持内连接(INNER JOIN)、左连接(LEFT JOIN)等,可以方便地处理关联关系。例如: ```sql SELECT s, c FROM Student s LEFT JOIN s.courses c ``` 这个查询将返回每个学生及其所有关联的课程。 **6. HQL的聚合...
HQL支持SQL的连接查询,包括内连接、左外连接、右外连接和全连接(不常用)。例如,使用内连接: ```java select a.id, b.id from A a inner join B b on a.id = b.id ``` 等价于SQL中的`INNER JOIN`。查询结果通常...
HQL(Hibernate Query Language)是Hibernate框架提供的面向对象的查询语言,它允许开发者用类名和属性名称来执行SQL查询,使得代码更加易读且与数据库无关。本文将深入分析HQL在处理多对多关系时的查询语句及其应用...
- **连接查询**:可以使用 `join` 关键字进行连接查询,以获取多个表中的数据。 #### 六、总结 HQL 提供了一种简洁高效的查询方式,不仅减少了代码量,还提高了代码的可读性和可维护性。通过上述示例,我们可以看到...
HQL的强大之处在于它可以处理复杂的查询,比如分组、排序、连接等,例如: ```java query = session.createQuery("from User u join u.roles r where r.name = 'Admin'"); users = query.list(); ``` 这个查询将...
HQL还支持连接查询和子查询,可以处理复杂的数据关系。通过理解并熟练运用这些HQL语句,开发者可以更加高效地操作数据库,提升应用程序的性能和可维护性。在实际项目中,合理运用HQL能大大简化数据查询和处理的工作...
HQL Hibernate 查询语言 HQL(Hibernate Query Language)是 Hibernate 中的一种强大的查询语言,它看起来很像 SQL,但是不要被语法结构上的相似所迷惑,HQL 是非常有意识的被设计为完全面向对象的查询,它可以理解...
它支持连接(inner/outer/full joins)、投影、聚合、分组、排序、子查询以及SQL函数调用。 2. 简单HQL示例: ```java Query query = session.createQuery("from User user where user.name like 'J%'"); List...
HQL支持基本查询、聚合函数、分组、排序、子查询以及连接查询等多种操作,使得数据库查询更加灵活和高效。 一、HQL基本查询 HQL的基本查询语法与SQL类似,但更加面向对象。例如,要查询所有User对象,HQL语句可以写...
Hibernate Query Language(HQL)是Hibernate框架提供的面向对象的查询语言,它在外观上类似于SQL,但具有显著的面向对象特性,如支持继承、多态和关联。本教程将深入讲解HQL的基本概念、用法和特性。 ### 1. 大小...
### Hibernate中HQL语句查询学习笔记 #### HQL基础 **HQL**(Hibernate Query Language)是Hibernate框架推荐使用的查询语言,它提供了一种面向对象的方式来查询数据库,支持多种复杂的查询操作,如继承、多态及...
Hibernate 支持多种方式来实现多表连接查询,包括 HQL(Hibernate Query Language)和 Criteria 查询。本项目主要关注 Criteria API 的使用,这是一种基于 Java 对象的查询方式,更加灵活且易于理解和维护。 **...