mysql hql连表查询_hibernate4+查询【HQL多表查询、Mysql里面多表查询、Hibernate 检索策略(立即查询、延迟查询)、关联级别延迟操作、批量抓取】...

本文详细介绍了如何在MySQL中使用HQL进行多表查询,包括内连接、左外连接和右外连接的语法及示例。同时,解释了Hibernate的检索策略,如立即查询与延迟查询的区别,并探讨了关联级别延迟加载的配置方法以及批量抓取数据的高效策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HQL多表查询

Mysql里面多表查询

1、内连接

/*内连接查询*/

SELECT*EROM t customer c,t linkman 1 WHERE c.cid=1.clid SELECT*FROM t customer c INNER JoIN t linkman 1 oN c.cid=l.clid

2、左外连接

/*左外连接*/

SELECT*FROM t customir c IEFT OUTER JoINt 1inkman 1 oN c.cid=l.clid

3、右外连接

/*右外连接*/

SELECT*FROM t_customer c RIGHT OUTER JOIN t_1inkman 1 oN c.cid=l.clid

HQL实现多表查询

Hql多表查询

(1)内连接

(1)from Customer c inner join c.setLinkMan

//1创建query对象

Query query=session.createQuery("from Customer c inner join c.setLinkMan");List list=query.list();

97718b7064568efe159ed1b1745dbf91.png

(2)左外连接

0d5359bbd6b9226df4e54c14268b11f8.png

(3)右外连接

1ee2ddad7bab79e21adbbd3a8ed201d6.png

(4)迫切内连接

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

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

0179acfd1e60255f83876ae9054ad575.png

76d1be9a2279ecf71161422df5e2534e.png

Hibernate 检索策略

1、hibernate 检索策略分为两类:

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

84959e168c961fb6c8973ef28902399b.png

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

e72b063a492ed48f0e72151f2aa6f6b9.png

2、延迟查询分成两类:

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

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

9f0fd420f52a25635b96a4199d53f17f.png

关联级别延迟操作

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

(1)根据客户得到所有的联系人,在客户映射文件中配置2在set标签上使用属性

fetch:值select(默认)

lazy:值

-true:延迟(默认)

-false:不延迟

-extra:极其延迟

9382d5cf70b5b34c076998eac76bc016.png

批量抓取

1、普通方法(效率不高)

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

cd238eea1cdac481bc28921a012d63d7.png

2、高效率方法,设置映射文件,batch-size越大效率越高

530e2d24ebc1049d314000166fb696fd.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值