6,缓存机制

缓存:暂时的存储一些数据,为了加快系统的查询速度…
CPU中一级缓存(4MB),二级缓存(16MB)
数据库交互:
MyBatis缓存机制:Map,能保存查询出的一些数据
一级缓存:线程级别的缓存(本地缓存,sqlSession级别的缓存)
二级缓存:全局范围的缓存,除过当前线程,SqlSession能用外,其他也能用

一级缓存:默认存在的

只要之前查询过的数据,mybatis就会保存在一个缓存中(Map),下次获取直接从缓存中拿
一级缓存失效的几种情况:
1)不同的sqlsession使用不同的一级缓存
只有在同一个sqlSession期间查询到的数据会保存在本sqlSession缓存中
2)同一个方法,参数不同还会发新的sql
3)在这个sqlSession期间执行上任何一次增删改操作,增删改操作会把缓存清空
4)手动清缓存:openSession.clearCache();

二级缓存

在这里插入图片描述
二级缓存MyBatis默认是没有开启的
全局配置开启

<!-- 开启全局缓存开关 -->
	<setting name="cacheEnabled" value="true"/>

配置某个dao.xml
在这里插入图片描述

<!-- 使用二级缓存 -->  
    <cache></cache>

可能的异常:javaBean要实现序列化

public class Teacher implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

整合第三方缓存

MyBatis开放了自己的Cache接口
在这里插入图片描述
整合ehcache,ehcache是一个非常专业的java进程内的缓存框架
1、导包
在这里插入图片描述
在这里插入图片描述
2、ehcache要工作要有配置文件
文件名叫ehcache.xml放在类路径根目录下
3、在mapper.xml中配置

 <cache type="org.mybatis.caches.ehcache.EhcacheCache"></cache>
发布了84 篇原创文章 · 获赞 1 · 访问量 1050

猜你喜欢

转载自blog.csdn.net/qq_44028719/article/details/103646404
今日推荐