mybatis的缓存基础

本文介绍了缓存的基本概念、工作原理及开发步骤,强调了其带来的速度提升和数据库压力减轻的优点,同时也指出数据不同步的弊端及解决方案。在MyBatis中,详细阐述了一级缓存(sqlSession级别)和二级缓存(sqlSessionFactory级别)的特点,包括它们的存储方式、作用范围以及在实际应用中的注意事项。在SSM整合时,一级缓存可能会失效。
摘要由CSDN通过智能技术生成

所有缓存的基础:

1.什么是缓存

缓存是一个容器,用来存放我们想要的数据

2.缓存的思想

但用户第一次查询的时候,缓存这个容器中还没有数据,此时去查询数据库

查询数据库得到的结果,一方面返回给应用程序,另一方面放到缓存中(容器中)

但用户第二次访问的时候,此时容器中已经有了数据此时直接从容器中获取数据即可,不需要查询数据库了。

3.缓存的开发步骤

if(查看缓存中有没有){

直接从缓存中取出

}else{

//查询数据库,返回数据,把数据存放到缓存中

}

4.缓存的好处:

①快速 速度高(前提把缓存放到内存中)

②减少与数据库的交互,减小mysql的压力

③提高用户体验

5:缓存的弊端:

查询出来的数据和真实的数据可能存在不一致的情况,导致数据不同步

6:如何解决这个弊端:

在进行数据修改的时候,把缓存清除掉

或者定时实时同步

mybatis缓存的基础:

第一种:一级缓存(默认开启)

一级缓存是sqlSession级别的缓存,可以这样理解:通过同一个sqlSession获得的对象,操作同样的方法,都会有一级缓存

存储:是一个Map集合,存储在内存中。key里面保存查询语句,条件,元信息等(可以看出来并不保存对象,所以和对象无关),value里面存放查询出来的结果

但是:SSM整合时,一级缓存失效

第二种:二级缓存

二级缓存是sqlSessionFactory级别的缓存

二级缓存是nameSpace级别下的缓存(说明要在mybatis_config.xml的namespace里面放入<cache/>)

也就是说,通过同一个sqlSessionFactory获得sqlSession,再获得mapper调用同样的方法会有二级缓存。

二级缓存:也是Map集合,可能存在内存中,也可能存在硬盘上(所以实体类要实现可序列化接口)

key:查询语句,条件,元信息等组成,value里面存放查询出来的结果

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值