01.搭建开发环境

02.连接查询

package com.gordon.test;

import java.util.Arrays;
import java.util.List; import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test; import com.gordon.domain.Book;
import com.gordon.domain.Publisher;
import com.gordon.utils.HibernateUtil; /**
* 连接查询
* @author Administrator
*/
public class TestDemo5 { /**
* 连接查询-右外连接
* 查询结果
Hibernate:
select
book0_.id as id1_0_0_,
publisher1_.id as id1_1_1_,
book0_.name as name2_0_0_,
book0_.price as price3_0_0_,
book0_.publisher_id as publishe4_0_0_,
publisher1_.name as name2_1_1_
from
t_book book0_
left outer join
t_publisher publisher1_
on book0_.publisher_id=publisher1_.id
云计算技术及性能优化
---电子工业出版社
C语言程序设计
---电子工业出版社
中国冰雪梦
---电子工业出版社
Photoshop图形图像处理
---北京大学出版社
VisualBasic2015实践教程
---北京大学出版社
生产微服务
---人民邮电出版社
架构探险:轻量级微服务架构(下册)
---人民邮电出版社
*/
@Test
public void run4() {
Session session = HibernateUtil.getCurrentSession();
Transaction transaction = session.beginTransaction(); String hql = "from Book b right join b.publisher p";
Query query = session.createQuery(hql); Book b = null;
Publisher p = null; List<Object[]> list = query.list();
for (Object[] book : list) { b = (Book) book[0];
p = (Publisher) book[1]; System.out.println(b.getName());
System.out.println("---" + p.getName());
} transaction.commit();
} /**
* 连接查询-左外连接
* 查询结果
Hibernate:
select
book0_.id as id1_0_0_,
publisher1_.id as id1_1_1_,
book0_.name as name2_0_0_,
book0_.price as price3_0_0_,
book0_.publisher_id as publishe4_0_0_,
publisher1_.name as name2_1_1_
from
t_book book0_
left outer join
t_publisher publisher1_
on book0_.publisher_id=publisher1_.id
云计算技术及性能优化
---电子工业出版社
C语言程序设计
---电子工业出版社
中国冰雪梦
---电子工业出版社
Photoshop图形图像处理
---北京大学出版社
VisualBasic2015实践教程
---北京大学出版社
生产微服务
---人民邮电出版社
架构探险:轻量级微服务架构(下册)
---人民邮电出版社
*/
@Test
public void run3() {
Session session = HibernateUtil.getCurrentSession();
Transaction transaction = session.beginTransaction(); String hql = "from Book b left join b.publisher p";
Query query = session.createQuery(hql); Book b = null;
Publisher p = null; List<Object[]> list = query.list();
for (Object[] book : list) { b = (Book) book[0];
p = (Publisher) book[1]; System.out.println(b.getName());
System.out.println("---" + p.getName());
} transaction.commit();
} /**
* 连接查询-隐式内连接
* 查询结果
Hibernate:
select
book0_.id as id1_0_0_,
publisher1_.id as id1_1_1_,
book0_.name as name2_0_0_,
book0_.price as price3_0_0_,
book0_.publisher_id as publishe4_0_0_,
publisher1_.name as name2_1_1_
from
t_book book0_ cross
join
t_publisher publisher1_
where
book0_.publisher_id=publisher1_.id
云计算技术及性能优化
---电子工业出版社
C语言程序设计
---电子工业出版社
中国冰雪梦
---电子工业出版社
Photoshop图形图像处理
---北京大学出版社
VisualBasic2015实践教程
---北京大学出版社
生产微服务
---人民邮电出版社
架构探险:轻量级微服务架构(下册)
---人民邮电出版社
*/
@Test
public void run2() {
Session session = HibernateUtil.getCurrentSession();
Transaction transaction = session.beginTransaction(); String hql = "from Book b, Publisher p where b.publisher = p";
Query query = session.createQuery(hql); Book b = null;
Publisher p = null; List<Object[]> list = query.list();
for (Object[] book : list) { b = (Book) book[0];
p = (Publisher) book[1]; System.out.println(b.getName());
System.out.println("---" + p.getName());
} transaction.commit();
} /**
* 连接查询-显示内连接
* 查询结果
Hibernate:
select
book0_.id as id1_0_0_,
publisher1_.id as id1_1_1_,
book0_.name as name2_0_0_,
book0_.price as price3_0_0_,
book0_.publisher_id as publishe4_0_0_,
publisher1_.name as name2_1_1_
from
t_book book0_
inner join
t_publisher publisher1_
on book0_.publisher_id=publisher1_.id
云计算技术及性能优化
---电子工业出版社
C语言程序设计
---电子工业出版社
中国冰雪梦
---电子工业出版社
Photoshop图形图像处理
---北京大学出版社
VisualBasic2015实践教程
---北京大学出版社
生产微服务
---人民邮电出版社
架构探险:轻量级微服务架构(下册)
---人民邮电出版社
*/
@Test
public void run1() {
Session session = HibernateUtil.getCurrentSession();
Transaction transaction = session.beginTransaction(); String hql = "from Book b inner join b.publisher";
Query query = session.createQuery(hql); Book b = null;
Publisher p = null; List<Object[]> list = query.list();
for (Object[] book : list) { b = (Book) book[0];
p = (Publisher) book[1]; System.out.println(b.getName());
System.out.println("---" + p.getName());
} transaction.commit();
}
}

Hibernate- 连接查询的更多相关文章

  1. hibernate连接查询

    Hibernate的HQL语言类似于SQL语言,更适合于Java面向对象的思想. 类与数据库映射好了,不必考虑数据库. 实现Class1的表与Class2的表的联合查询: Class1的class2属 ...

  2. Hibernate批量处理数据、HQL连接查询

    一.批量处理操作 批量处理数据是指在一个事务场景中处理大量数据.在应用程序中难以避免进行批量操作,Hibernate提供了以下方式进行批量处理数据: (1)使用HQL进行批量操作     数据库层面 ...

  3. hibernate 实现多表连接查询(转载)

    http://www.cnblogs.com/lihuiyy/archive/2013/03/28/2987531.html 为了方便,直接粘过来,方便查看.不收藏了 Hibernate主要支持两种查 ...

  4. Hibernate的查询,二级缓存,连接池

    Hibernate的查询,二级缓存,连接池 1.Hibernate查询数据 Hibernate中的查询方法有5中: 1.1.Get/Load主键查询 使用get或者load方法来查询,两者之间的区别在 ...

  5. Hibernate【查询、连接池、逆向工程】

    前言 在Hibernate的第二篇中只是简单地说了Hibernate的几种查询方式....到目前为止,我们都是使用一些简单的主键查询阿...使用HQL查询所有的数据....本博文主要讲解Hiberna ...

  6. Hibernate批量处理数据、[HQL连接查询]

    一.批量处理操作 批量处理数据是指在一个事务场景中处理大量数据.在应用程序中难以避免进行批量操作,Hibernate提供了以下方式进行批量处理数据: (1)使用HQL进行批量操作 数据库层面 (2)使 ...

  7. Hibernate-ORM:13.Hibernate中的连接查询

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客将会解释Hibernate中的连接查询(各种join) 一,目录 1.内链接 1.1显式内连接(inn ...

  8. 【学习笔记】Hibernate HQL连接查询和数据批处理 (Y2-1-7)

    HQL连接查询 和SQL查询一样 hql也支持各种链接查询 如内连接 外连接 具体如下 左外连接 left (outer) join 迫切左外连接 left (outer) join fetch 右外 ...

  9. 转: Hibernate HQL查询 插入 更新(update)实例

    1.实体查询:有关实体查询技术,其实我们在先前已经有多次涉及,比如下面的例子:String hql=”from User user ”;List list=session.CreateQuery(hq ...

  10. Hibernate的查询方式总结

    Hibernate的查询方式大体有三种,分别是HQL QBC和SQL三种.在网上查阅一一些资料,做了一个简单的总结. 1. SQL sql 是面向数据库表查询,from 后面跟的是表名,where 后 ...

随机推荐

  1. 【java设计模式】之 代理(Proxy)模式

    代理模式的核心作用就是通过代理,控制对对象的访问.这跟实际中是一样的,比如说明星都有经纪人,这就是一个代理,比如有人要找某明星拍戏,那么首先处理这事的是他的经纪人,虽然拍戏需要自己拍,但是拍戏前后的一 ...

  2. JMeter学习笔记--详解JMeter逻辑控制器

    JMeter使用逻辑控制器来决定采样器的处理顺序 简单控制器(Simple Controller):存储设备(将某些采样器归组) 循环控制器(Loop Controller:设置循环次数 仅一次控制器 ...

  3. OAF_OAF OAWebBean和OAPageContext的分析(概念)

    2015-04-03 Created By BaoXinjian

  4. Storm 简单介绍

    Nimbus :负责资源分配和任务调度, 把任务相关的元信息写入Zookeeper 对应文件夹. Supervisor :负责接受nimbus 分配的任务,启动和停止属于自己管理的worker 进程. ...

  5. 控件不响应OnMouseMove

    原文链接: http://bbs.csdn.net/topics/370017205 问:我继承CStatic写了个CStaticEx,设为Rectangle类型,用来画图.把这个控件添加到了一个Vi ...

  6. js 重写 bootstrap 样式 alert/confirm 消息窗口

    相信很多人都受够了 alert.confirm 的样子,最近正在用 bootstrap 做项目,顺便封装了一个 bootstrap 样式的消息框. 实现起来很简单,bootstrap 本身就自带了 m ...

  7. C# list介绍

    一.LIST概述 所属命名空间:System.Collections.Generic      public class List<T> : IList<T>, ICollec ...

  8. Android开发6——布局中的wrap_content和fill_parent以及match_parent

    一.言简意赅 fill_parent 是让控件宽或者高占全屏 wrap_content是让控件的高或宽仅仅把控件里的内容包裹住而不是全屏 二.分别来看  1 fill_parent 设置一个构件的布局 ...

  9. XILINX之RAM使用指南(加个人总结)

    先加点自己的总结:真双口RAM可以在任意时间访问任意地址,两个端口的地址是一样的,即共享内存和地址.这就会带来一个问题:同时读写一个地址会发生冲突.基于这个点矛盾就要设置限制条件,这个在Xilinx ...

  10. android即时消息处理机制

    在android端做即时消息的时候.遇到的坑点是怎么保证消息即时性,又不耗电.为什么这么说呢?      原因是假设要保证消息即时性.通常有两种机制pull或者push. pull定时轮询机制,比較浪 ...