MyBatis2

高级应用
 
注意:因为一个订单信息只会是一个人下的订单,所以从查询订单信息出发,关联查询用户信息为一对
一查询。如果从用户信息出发,查询用户下的订单信息则为一对多查询,因为一个用户可以下多个订
单。
 
延迟加载
什么是延迟加载
MyBatis中的延迟加载,也称为懒加载,是指在进行关联查询时,按照设置延迟规则推迟对关联对
象的select查询。延迟加载可以有效的减少数据库压力。
Mybatis的延迟加载,需要通过resultMap标签中的association和collection子标签才能演示成
功。
Mybatis的延迟加载,也被称为是嵌套查询,对应的还有嵌套结果的概念,可以参考一对多关联的
案例。
注意:MyBatis的延迟加载只是对关联对象的查询有延迟设置,对于主加载对象都是直接执行查
询语句的。
延迟加载的分类
MyBatis根据对关联对象查询的select语句的执行时机,分为三种类型:直接加载、侵入式加载与深度
延迟加载
直接加载: 执行完对主加载对象的select语句,马上执行对关联对象的select查询。
侵入式延迟:执行对主加载对象的查询时,不会执行对关联对象的查询。但当要访问主加载对象的
某个属性(该属性不是关联对象的属性)时,就会马上执行关联对象的select查询。
深度延迟:执行对主加载对象的查询时,不会执行对关联对象的查询。访问主加载对象的详情时也
不会执行关联对象的select查询。只有当真正访问关联对象的详情时,才会执行对关联对象的
select查询。
延迟加载策略需要在Mybatis的全局配置文件中,通过标签进行设置。
缓存介绍
Mybatis提供查询缓存,如果缓存中有数据就不用从数据库中获取,用于减轻数据压力,提高系统性
能。
Mybatis的查询缓存总共有两级,我们称之为一级缓存和二级缓存,如图:
一级缓存是SqlSession级别的缓存。在操作数据库时需要构造 sqlSession对象,在对象中有一个
数据结构(HashMap)用于存储缓存数据。不同的sqlSession之间的缓存数据区域(HashMap)
是互相不影响的。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
posted @   又回到了起点  阅读(30)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
历史上的今天:
2020-06-29 再次对redux进行研究1
2018-06-29 转义字符
点击右上角即可分享
微信分享提示