20200109——mybatis最后一天

mybatis的延迟加载
什么延迟加载
什么是立即加载
如果实现

mybatis的缓存
什么是缓存
为什么使用缓存
什么样的数据可以使用缓存 什么样的数据不能使用

mbatis一级缓存 二级缓存

mybatis中的延迟加载
问题:在一对多,我们有一个用户,它有100个账户
查询用户的时候,关联的账户是否查询出来
查询账户,要不要把关联的用户查出来

在查询用户时,用户下的账户信息应该是,什么时候使用,什么时候查询的
在查询账户时,账户的所属用户信息应该是随着账户查询一起查询出来

延迟加载:符合第一种,真正使用数据的时候才查询,不用的时候不查询,也叫按需加载 ,也叫懒加载

立即加载:不管用不用,只要一调用方法,马上发起查询

在对应的四种表关系
一对多 多对一 一对一 多对多

根据关联的对象分为一与多
分成
多对一 一对一 通常情况,我们都是立即加载
一对多 多对多 通常情况,我们都是采用延迟下载

select属性指定的内容,查询用户唯一的标识
在这里插入图片描述
select里面是用户如何查询用户的
在这里插入图片描述
原来iaccountdao

缓存
存在于内存临时数据
为什么使用缓存
减少和数据库交互次数,提高执行效率

适用于缓存的数据,经常查询的并且不常改变的
数据的正确与否对最终结果影响不大

不适用于缓存,经常改变的数据,数据的正确与否对数据影响很大
商品的库存,银行的汇率,股市的牌价

mybatis 一级缓存
指定的mysql 中sqlsession对象的缓存
当我们执行查询之后,查询的结果会同时存入到sqlsession提供的区域中
该区域结构是一个map
当我们再次查询同样的数据,mybatis会先去sqlsession是否有
有的话,直接取出调用
当sqlsession对象消失时,mybatis一级缓存也就没了

sqlseesion.close()
sqlsession.clearCache() 此方法也可以清空缓存

一级缓存是 SqlSession 范围的缓存,当调用 SqlSession 的修改,添加,删除,commit(),close()等

二级缓存
它指的是mybatis中sqlsessionFactory对象的缓存,由同一个sqlsessionFactory对象创建的sqlsession共享其缓存

二级缓存步骤
第一步:mybatis支持二级缓存 在sqlmapconfig
第二步:让当前映射文件支持二级缓存 IUserDAo
第三步:让当前的操作支持二级缓存

<cache>

再在select查询中,添加属性 useCache = true
在这里插入图片描述
二级缓存存放的是数据,而不是对象

发布了657 篇原创文章 · 获赞 39 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/qq_36344771/article/details/103902884