Hibernate入门框架第四天

Hibernate 的查询方式
1.对象导航查询
2. 对象导航查询
3.hql 查询
查询所有
条件查询
排序查询
分页查询
投影查询
聚集函数查询
4.qbc查询
查询所有
条件查询
排序查询
分页查询
统计查询
5.hql 多表查询
(1) mysql 多表查询回顾
(2) hql 多表查询
6 hibernate 的检索策略
(1)概念
(2) 具体操作

Hibernate 查询方式:

1.对象导航查询
(1)根据id 查询某个客户 ,再查询这个客户里面所有的联系人.

  1. OID导航查询
    (1) 根据id 查询某一条记录,返回对象
    3.hql 查询
    (1) Query 对象,写hql 语句实现查询

4 .qbc查询
(1) Creteria 对象
5.本地SQL查询
(1) SQLQuery 对象 ,使用普通SQL实现查询
对象导航查询
1.查询某个客户里面所有联系人过程,使用对象导航实现
3. 代码
在这里插入图片描述
4. OID导航查询
根据id 查询某一条记录,返回对象
(1) 调用session 里面的get方法实现
在这里插入图片描述
HQL 查询
hql :hibernate query language,hibernate 提供一种查询语言,hql 语言与普通sql 很相似.
区别: 普通sql 操作数据库和字,hql操作的是实体类和属性.
. 常用的hql 语句
(1) 查询所有: from 实体类名称
(2) 条件查询: from 实体类名称 where 属性名称=?
(3) 排序查询: from 实体类名称 order by 实体类属性名称 asc/desc

使用hql 操作时候使用Query 对象
(1) 创建Query 对象,写hql 语句
(2) 调用query 对象里面的方法得到结果.

2.查询所有:from 实体类名称
在这里插入图片描述
条件查询
5. hql 条件查询语句写法:
常用的hql
(1) from 实体类名称 where 实体类属性名称=? and 实体类属性名称=?
from 实体类名称 where 实体类属性名称like ?
2.代码:
在这里插入图片描述
模糊查询

排序查询
6. hql 排序语句语法
(1) from 实体类名称 order by 实体类属性名称 asc/desc
在这里插入图片描述
分页查询
7. mysql 实现查询
(1) 使用关键字limit 实现
在这里插入图片描述
(2) hql 中实现分页
(1) hql 操作中,在语句里面不能写limit ,hibernate的Query 对象封装两个方法实现分页操作
在这里插入图片描述
投影查询
1.投影查询: 查询不是所有字段,而是部分字段的值
2.投影查询的HQL 语句写法
(1)select 实体类属性名称1,实体类属性2 from 实体类名称
(2) select 后面不能写 * 不支持
代码实现
在这里插入图片描述

聚集函数查询
1. 常用的聚集函数
(1) count ,sun,avg,max,min
2.hql 聚集函数语句写法
查询表记录数
select count(*) from
在这里插入图片描述
不能直接强转为int 类型负负责会类型转换异常
在这里插入图片描述
QBC 查询
1.使用hql 查询需要写hql 语句实现 ,但是使用qbc时候不需要写语句了,使用方法实现
2. 使用qbc时候,操作实体类和属性
3. 使用qbc, 使用Criteria对象
查询所有
1 创建Criteria对象
2.调用方法得到结果
在这里插入图片描述
**条件查询 **
qbc当中的方法
在这里插入图片描述

  1. 没有语句书写 ,使用的封装方法实现
    在这里插入图片描述
    在这里插入图片描述
    ** 排序查询 **
    在这里插入图片描述
    在这里插入图片描述
    ** 分页查询 **
    在这里插入图片描述
    开始位置公式: (当前页 -1) * 每页记录数
    ** 统计查询 **
    在这里插入图片描述
    **离线查询 **

  2. servlet 调用service ,service 调用dao
    (1) 在dao 里面对数据库进行CRUD 操作
    (2) 在dao 里面使用的是hibernate 框架,使用hinernate 框架时候,调用session 里面的方法实现功能.
    在这里插入图片描述
    HQL 多表查询
    MySQL多表查询
    1.内连接
    在这里插入图片描述
    2.左外连接
    在这里插入图片描述
    3.右外连接
    在这里插入图片描述
    HQL实现多表查询
    Hql多表查询
    (1) 内连接
    内连接查询hql 语句写法:以客户和联系人为例:
    (1) from Customer c inner join c.SetLinkMan
    在这里插入图片描述
    返回list, list里面每部分是数组形式
    在这里插入图片描述

  3. 演示迫切内连接
    (1)内连接和迫切内连接连接底层实现一样的
    (2)区别:使用内连接返回list 中每部分是数组,迫切内连接返回list每部分是对象
    (3) hql 语句写法
    from Customer c inner join fetch c.SetLinkMan
    在这里插入图片描述
    (2)左外连接
    左外连接hql 语句
    (1) from Customer c inner left outer join c.SetLinkMan
    迫切左外连接
    (2) from Customer c left outer join feach c.SetLinkMan
    左外连接返回list 中每部分返回的是数组
    在这里插入图片描述

    迫切左外连接返回 list 中每部分返回的是对象
    在这里插入图片描述
    (3)右外连接
    右边连接hql 语句
    from Customer c right left outer join c.SetLinkMan
    迫切右外连接
    from Customer c right left outer join feach c.SetLinkMan
    Hibernate 检索策略
    检索策略的概念
    1.hibernate 检索策略分为两类:
    (1) 立即查询: 根据id查询,调用Get方法,一调用get 方法马上发送语句查询查询数据库.
    代码:
    在这里插入图片描述

(2) 延迟查询: 根据id 查询,还有load方法,调用load方法,不会马上发送查询数据,只要得到对象里面的值时候才会发送语句查询数据库
代码:
在这里插入图片描述
2.延迟查询
(1) 类级别延迟:根据id查询返回实体类对象,调用load方法不会马上发送语句.
(2) 关联级别延迟:查询除某个客户,再查询这个客户的所有联系人.查询客户的所有联系人的过程是否需要延迟,这个过程称为关联级别延迟.
在这里插入图片描述

检索策略set 的lazy 和feach 属性
在这里插入图片描述

关联级别延迟操作
1.在映射文件中配置实现
(1)根据客户得到的联系人,在客户映射文件中配置
2.在Set 标签上使用属性
(1) feach : 值 select(默认)
(2) lazy: 值
-true :延迟(默认)
-false:不延迟
-exsra 极其延迟
在这里插入图片描述
在这里插入图片描述
(1)调用get之后,发送两条SQL语句
在这里插入图片描述
在这里插入图片描述
(1) 及其懒惰,要什么值给什么值
在这里插入图片描述
批量抓取
1.查询所有的客户,返回list集合,遍历list集合,得到每个客户,得到每个客户的所有联系人
(1)上面操作的代码,会多次发送SQL语句
在这里插入图片描述
2.在客户映射文件中,Set 标签配置
(1) batch-size 值,值越大发送语句越少
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值