美文网首页
一级缓存

一级缓存

作者: 无限骄傲 | 来源:发表于2020-12-12 23:54 被阅读0次

一级缓存的机制

首先,一级缓存是sqlSession级别的,也就是在一个sqlSession中如果进行了多次重复的sql查询操作,实际上除了第一次后面都是从缓存中获取的(这里只讲解一级缓存 默认二级缓存关闭).当然如果我们对数据进行了增删改操作以及事务提交关闭就会刷新缓存,一级缓存的数据结构是一个hashMap.下面演示一下效果

无更新操作 结果 新增更新操作 结果展示

我们可以看出三点:

1) 连续两次查询同一数据第一次会去数据库中查询,后面会直接从缓存中取值.

2)从缓存中取值的对象是同一个对象

3)进行更新操作后 会刷新缓存 从数据库从新取值

一级缓存流程

源码分析

首先我们带着问题进行分析

一级缓存到底是什么?一级缓存什么时候被创建、一级缓存的工作流程是怎样的?

查询流程剖析

mybatis中所有的查询基本都是走Sqlsession.selectList方法 所以我们只需要找其中有关缓存的方法即可

缓存流程

源码分析

首先一级缓存的 数据结构是hashMap证明

我们可以直接从execute.query中查看

execute.query缓存操作 查询后插入一级缓存

从源码中还可以看出当LocalCacheScope属性设置为STATEMENT时候查询也是会清空缓存的

LocalCacheScope配置相关

进行更新操作时候 缓存也会清空

相关文章

  • 你真的懂Mybatis缓存机制吗

    MyBatis自带的缓存有一级缓存和二级缓存。 一级缓存 Mybatis的一级缓存是指Session缓存。一级缓存...

  • mybatis一级缓存和二级缓存

    MyBatis官网MyBatis拥有自带一级缓存和二级缓存 一级缓存: MyBatis是默认开启一级缓存,一级缓存...

  • [java]38、MyBatis缓存

    1、缓存 MyBatis的缓存分为一级缓存、二级缓存,用于缓存select的结果 1.1、一级缓存 一级缓存是存放...

  • java基础面试题总结——其他大型框架

    1. 简述mybatis缓存机制的实现原理 mybatis缓存分为一级缓存和二级缓存: 一级缓存 概念:一级缓存即...

  • MyBatis缓存书目录

    MyBatis缓存 MyBatis介绍 MyBatis一级缓存 1、什么是一级缓存? 为什么使用一级缓存? 2、M...

  • MyBatis(4)一级缓存,二级缓存

    MyBatis的缓存,包括一级缓存,二级缓存。 什么是一级缓存? 一级缓存指的就是sqlsession,在sqls...

  • Mybatis缓存机制:一级缓存与二级缓存

    MyBatis的缓存分为一级缓存(本地缓存)和二级缓存 1、一级缓存 MyBatis的一级缓存是默认会开启的并且不...

  • Mybatis缓存

    mybatis分为一级缓存和二级缓存,在默认的情况下,Mybatis只会开启一级缓存 一级缓存 一级缓存是一次会话...

  • 一级缓存体验

    1. 测试一级缓存 2. 测试结果 一级缓存也称本地缓存,sqlSession级别的缓存,一级缓存是一直开...

  • Hibernate之缓存

    一、一级缓存 1、在session上面有一个一级缓存,一级缓存的生命周期和session相同,一级缓存最大生命周期...

网友评论

      本文标题:一级缓存

      本文链接:https://www.haomeiwen.com/subject/istugktx.html