Mybatis内部模块之---缓存模块

Posted lys-lyy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis内部模块之---缓存模块相关的知识,希望对你有一定的参考价值。

1.缓存的几类是Cache接口(基于Map实现的)

2.真正实现缓存的基础类

是PerpetualCache.java(这个是基于SqlSession的一级缓存的)

3.缓存的其他装饰器

:BlockIngCache.java,其中的成员变量Cache,就是为了增强PerpetualCache对象的;

4.Mybatis中一级缓存和二级缓存讲解:

4.1 一级缓存

      默认是开启的。要是需要关闭的话。需要配置 <select id="selectUserPosition1" flushCache="true">

      一级缓存存在于Sqlsession生命周期,是线程独享的(若Sqlsession关闭了,缓存也就失效了)

      任何的DDL语句,都会是缓存清除,

      一级缓存查询出来的对象,是同一个对象

4.2 二级缓存

       如果一级缓存配置的是失效的话,二级缓存也是会查询数据库的;

       二级缓存是存在于SqlSessionFactory中的,可以理解为是跨越Sqlsession 的,是以namespace为单位的,不同的namespace互不影响;

       缓存在settings中是默认开启的cacheEnable = true,

       还需要在mapper.xml里面配置<cache>节点信息

4.3 缓存的查询顺序 二级缓存-->一级缓存 ---> DB

5.CacheKey缓存的key

Mybatis中的缓存,不用string,而是用CacheKey,是因为影响缓存的因素很多:

5.1 命名空间+id

5.2 分页信息

5.3 sql语句

5.4 方法参数

 

以上是关于Mybatis内部模块之---缓存模块的主要内容,如果未能解决你的问题,请参考以下文章

带你彻底搞懂MyBatis的底层实现之缓存模块(Cache)-吊打面试官必备技能

带你彻底搞懂MyBatis的底层实现之缓存模块(Cache)-吊打面试官必备技能

mybatis 架构及基础模块

mybati之运行过程

myBatis组件之缓存实现及使用

基于JAVA SSM springmvc+mybati学生在线考试系统(《精品毕设》源码+sql)主要实现:用户管理角色管理学科管理考生管理试题考试试卷管理成绩统计以及学生端考试和成绩