20200109——mybatis最后一天

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

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

mbatis一级缓存 二级缓存

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

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

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

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

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

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

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

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

扫描二维码关注公众号,回复: 8715178 查看本文章

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

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

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