8.mybatis的缓存机制

本文详细介绍了MyBatis的一级缓存和二级缓存的工作原理,包括缓存的更新机制、如何启用二级缓存以及缓存数据的回收策略。通过理解这些机制,开发者可以更有效地管理和优化应用程序的性能。

查询出数据,在显示的同时,把查询结果进行缓存,那么下次当再次需要这些数据时,可以直接到缓存中获取,不用再次执行SQL语句

特点:

  • 提高了应用的效率
  • 缓存的数据容易过时
  • 如果有增,删,改的操作进行,那么缓存中的数据就失效

一级缓存(session级别的缓存,mybatis默认的缓存机制)

原理图:(必须是同一个session)
在这里插入图片描述
一级缓存数据更新
1、当session关闭后,session的数据会清空,进行重新查询、缓存
2、当提交事务(insert update delete)后,session中缓存的数据会清空。


二级缓存

原理图:(不同的session可以从同一缓存文件中获取缓存数据)
在这里插入图片描述

二级缓存的使用过程:
1、在mybatis-config.xml配置文件中的<settings></settings>标签中启用二级缓存

 <!-- 启用二级缓存 -->
<setting name="cacheEnabled" value="true"/>

在这里插入图片描述
2、在对应的mapper.xml文件中,例如UserMapper.xml,启用二级缓存
<cache></cache>
在这里插入图片描述

<!-- 启用二级缓存的总开关,此文件中的所有方法都使用二级缓存 -->	
<cache></cache>

UserRoleMapper.xml
在这里插入图片描述
3、POJO实体类实现可序列化的接口
在这里插入图片描述

(不必要)4、在mapper文件的某个增,删,改,查方法中可以设置不使用二级缓存 ,这样该方法就不会使用二级缓存,而使用默认的一级缓存
useCache="false"

当二级缓存启动后:

  • 1、所有的select语句的查询结果都会被缓存
  • 2、当执行了insert update delete ,会清空对应的缓存结果
  • 3、缓存会使用LRU(最近最少使用)算法收回数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值