HQL多表查询

Mysql里面多表查询

1 内连接

查的是两个表关联的数据

2 左外连接

查的是左边表所有数据,右边表关联数据

3 右外连接

HQL实现多表查询

Hql多表查询

(1)内连接

(2)左外连接

(3)右外连接

(4)迫切内连接

(5)迫切左外连接

HQL内连接

1 内连接查询hql语句写法:以客户和联系人为例

(1)from  Customer  c  inner  join  c.setLinkMan

返回list,list里面每部分是数组形式

2 演示迫切内连接

(1)迫切内连接和内连接底层实现一样的

(2)区别:使用内连接返回list中每部分是数组,迫切内连接返回list每部分是对象

(3)hql语句写法

- from  Customer  c  inner  join  fetch  c.setLinkMan

HQL左外连接

1 左外连接hql语句:

(1)from  Customer  c  left  outer  join  c.setLinkMan

(2)迫切左外连接from  Customer  c  left  outer  join  fetch  c.setLinkMan

2 左外连接返回list中每部分是数组,迫切左外连接返回list每部分是对象

1 右外连接hql语句:

(1)from  Customer  c  right  outer  join  c.setLinkMan

Hibernate检索策略

检索策略的概念

1 hibernate检索策略分为两类:

(1)立即查询:根据id查询,调用get方法,一调用get方法马上发送语句查询数据库

(2)延迟查询:根据id查询,还有load方法,调用load方法不会马上发送语句查询数据,只有得到对象里面的值时候才会发送语句查询数据库

2 延迟查询分成两类:

(1)类级别延迟:根据id查询返回实体类对象,调用load方法不会马上发送语句

(2)关联级别延迟:

- 查询某个客户,再查询这个客户的所有联系人,查询客户的所有联系人的过程是否需要延迟,这个过程称为关联级别延迟

关联级别延迟操作

1 在映射文件中进行配置实现

(1)根据客户得到所有的联系人,在客户映射文件中配置

2 在set标签上使用属性

(1)fetch:值select(默认)

(2)lazy:值

- true:延迟(默认)

- false:不延迟

- extra:极其延迟

true默认延时:

get时发一条和用的时候发一条sql语句

False不延时:

执行get就发了两条sql语句

(1)调用get之后,发送两条sql语句

(2)极其懒惰,要什么值给什么值

批量抓取

1 查询所有的客户,返回list集合,遍历list集合,得到每个客户,得到每个客户的所有联系人

(1)上面操作代码,发送了多条sql语句

2 在客户的映射文件中,set标签配置

(1)batch-size值,值越大发送语句越少

Hibernate_day04--HQL多表查询_Hibernate检索策略的更多相关文章

  1. HQL多表查询

    ------------------siwuxie095 HQL 多表查询 以客户和联系人为例(一对多) 1.内连接 (1)hql 语句写法 from Customer c inner join c. ...

  2. Hibernate多表查询、查询优化策略(四)

    多表HQL private static void innerJoin(){ //sql内连接 隐式内连接 select * from A,B where b.aid = a.id // 显示内连接 ...

  3. Hibernate hql 多表查询

    String hql="select c from Col c ,UserRole role where c.id=role.columnId and c.id=? and role.use ...

  4. Hibernate HQL多表查询

    1.内连接和迫切内连接 (1)内连接 HQL语句:from 实体类名 实体类别名 inner join 实体类别名.表示另一个表数据的集合名称 (2)迫切内连接 HQL语句:from 实体类名 实体类 ...

  5. Hibernate的HQL多表查询

    HQL的内连接查询 对于HQL内链接查询,查询的是两张表的数据,这两张表的数据首先是保存在数组之中,然后在将每一个数组保存在List集合之中进行返回 代码片段: @Test // 内连接 public ...

  6. hql 多表查询

    sql 单表/多表查询去除重复记录单表distinct多表group by select h from Hytxbz as h,Tgbzk as t where h.hytxbzid=t.hytxbz ...

  7. Hibernate查询以及优化策略04

    一. HQL查询 1. HQL(hibernate query language)单表查询 1.1 准备项目 创建项目: hinernate-03-query 引入jar,同前一个项目 复制实体(订单 ...

  8. mysql中的回表查询与索引覆盖

    了解一下MySQL中的回表查询与索引覆盖. 回表查询 要说回表查询,先要从InnoDB的索引实现说起.InnoDB有两大类索引,一类是聚集索引(Clustered Index),一类是普通索引(Sec ...

  9. [原创]java WEB学习笔记91:Hibernate学习之路-- -HQL 迫切左外连接,左外连接,迫切内连接,内连接,关联级别运行时的检索策略 比较。理论,在于理解

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

随机推荐

  1. js中ip地址与整数的相互转换

    转载地址 //IP转成整型function _ip2int(ip) {    var num = 0;    ip = ip.split(".");    num = Number ...

  2. 使用sqlplus连接提示:ORA-28002: the password will expire within 7 days

    今天在使用sqlplus时出现,或使用数据库的时候出现类似问题 =============================================== ERROR:ORA-28002: the ...

  3. javascript、js操作json对象和字符串互相转换方法

    相信前端的同学们对json并不陌生,接触过很多.但是很少人知道json的全称是什么,哈哈,我也是查资料知道的.(JSON JavaScript Object Notation是一种轻量级的数据交换格式 ...

  4. jenkins 下载插件失败处理办法

    jenkins 下载插件失败,提示: java.io.IOException: Downloaded file /app/jenkins_home/plugins/jacoco.jpi.tmp doe ...

  5. mac shell终端编辑命令行快捷键——行首行尾

    mac shell终端编辑命令行快捷键——行首行尾 ctrl+a //移到行首ctrl+e //移到行尾===========linux系统用============alt+a //移到光标所在单词首 ...

  6. CentOS-6.5下安装navicat for mysql

    一.安装前准备 安装epel源        安装wine        如果不安装wine,则可能会出现安装完navicat for mysql后无法启动的情况. 二.安装epel源 cd /tmp ...

  7. ctags高级用法

    1.ctags -R 有个问题,成员变量没有包含在里面.所以自动完成对象的成员时没有提示.解决办法:$ctags -R --fields=+iaS --extra=+q *–fields=[+|-]f ...

  8. GameObject非激活状态,触发测试

    测试结果为OnEnable,Start不执行.Awake不管激活未激活都执行 不管是驻留在层级面板,还是手动拖上去. 但是,在任何时间设为激活.就会2个都触发.Awake和Start只触发一次.这个问 ...

  9. Atitit.软件仪表盘(7)--温度监测子系统--电脑重要部件温度与监控and警报

    Atitit.软件仪表盘(7)--温度监测子系统--电脑重要部件温度与监控and警报 Cpu温度,风扇转速 主板温度 显卡温度 硬盘温度 电池温度 鲁大师  硬盘温度 Cpu温度  core temp ...

  10. 【原创】关于$test$plusargs和$value$plusargs的小结【SystemVerilog/Verilog】

    [原创]关于$test$plusargs和$value$plusargs的小结 Abtract $test$plusargs和$value$plusargs作为进行Verilog和SystemVeri ...