http://wlh269.iteye.com/blog/322050
连接查询(重要)
* 内连接
* 外连接(左连接/右连接)
参见:JoinQueryTest.java
内连接有三种:inner join ,join,“=”
- packagecom.wlh.hibernate;
-
importjava.util.Iterator;
-
importjava.util.List;
-
importjunit.framework.TestCase;
-
importorg.hibernate.Session;
-
publicclassJoinQueryTestextendsTestCase{
-
-
-
publicvoidtestQuery1(){
-
Sessionsession=null;
-
try{
- session=HibernateUtils.getSession();
- session.beginTransaction();
-
-
Liststudents=session.createQuery("selects.name,c.namefromStudentsjoins.classesc").list();
-
for(Iteratoriter=students.iterator();iter.hasNext();){
- Object[]o=(Object[])iter.next();
-
System.out.println("id="+o[0]+",o[1]"+o[0]);
- }
- session.getTransaction().commit();
-
}catch(Exceptione){
- e.printStackTrace();
- session.getTransaction().rollback();
-
}finally{
- HibernateUtils.closeSession(session);
- }
- }
-
-
-
publicvoidtestQuery2(){
-
Sessionsession=null;
-
try{
- session=HibernateUtils.getSession();
- session.beginTransaction();
-
-
Liststudents=session.createQuery("selects.name,c.namefromStudentsinnerjoins.classesc").list();
-
for(Iteratoriter=students.iterator();iter.hasNext();){
- Object[]o=(Object[])iter.next();
-
System.out.println("id="+o[0]+",o[1]"+o[0]);
- }
- session.getTransaction().commit();
-
}catch(Exceptione){
- e.printStackTrace();
- session.getTransaction().rollback();
-
}finally{
- HibernateUtils.closeSession(session);
- }
- }
-
-
-
publicvoidtestQuery3(){
-
Sessionsession=null;
-
try{
- session=HibernateUtils.getSession();
- session.beginTransaction();
-
-
Liststudents=session.createQuery("selects.name,c.namefromStudents,Classescwheres.classes.id=c.id").list();
-
for(Iteratoriter=students.iterator();iter.hasNext();){
- Object[]o=(Object[])iter.next();
-
System.out.println("id="+o[0]+",o[1]"+o[0]);
- }
- session.getTransaction().commit();
-
}catch(Exceptione){
- e.printStackTrace();
- session.getTransaction().rollback();
-
}finally{
- HibernateUtils.closeSession(session);
- }
- }
-
-
[b][color=red]外联接:能够查出2个表之间不相互关联的记录[/color][/b]
-
-
<PREclass=javaname="code"></PRE>
- <BR>
-
<BR>
-
<BR>publicvoidtestQuery4(){
-
<BR>Sessionsession=null;
-
<BR>try{
- <BR>session=HibernateUtils.getSession();
- <BR>session.beginTransaction();
-
<BR>
-
<BR>Liststudents=session.createQuery("selects.name,c.namefromStudentsleftjoins.classesc").list();
-
<BR>for(Iteratoriter=students.iterator();iter.hasNext();){
- <BR>Object[]o=(Object[])iter.next();
-
<BR>System.out.println("id="+o[0]+",o[1]="+o[1]);
- <BR>}
- <BR>session.getTransaction().commit();
-
<BR>}catch(Exceptione){
- <BR>e.printStackTrace();
- <BR>session.getTransaction().rollback();
-
<BR>}finally{
- <BR>HibernateUtils.closeSession(session);
- <BR>}
- <BR>}
- <BR>
- <BR>
- <BR>
-
<BR>
-
<BR>publicvoidtestQuery5(){
-
<BR>Sessionsession=null;
-
<BR>try{
- <BR>session=HibernateUtils.getSession();
- <BR>session.beginTransaction();
-
<BR>
-
<BR>Liststudents=session.createQuery("selects.name,c.namefromStudentsrightjoins.classesc").list();
-
<BR>for(Iteratoriter=students.iterator();iter.hasNext();){
- <BR>Object[]o=(Object[])iter.next();
-
<BR>System.out.println("id="+o[0]+",o[1]="+o[1]);
- <BR>}
- <BR>session.getTransaction().commit();
-
<BR>}catch(Exceptione){
- <BR>e.printStackTrace();
- <BR>session.getTransaction().rollback();
-
<BR>}finally{
- <BR>HibernateUtils.closeSession(session);
- <BR>}
- <BR>}
- <BR>
- <BR>
- <BR>}
分享到:
相关推荐
### 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 对象的查询方式,更加灵活且易于理解和维护。 **...