所有缓存的基础:

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里面存放查询出来的结果

mybatis的缓存基础相关推荐

  1. 10、mybatis中缓存的使用

    对于初学者,如何进行mybatis的学习呢?我总结了几点,会慢慢的更新出来.首先大家需要了解mybatis是什么.用mybatis来做什么.为什么要用mybatis.有什么优缺点:当知道了为什么的时候 ...

  2. Spring Boot之基于Redis实现MyBatis查询缓存解决方案

    转载自 Spring Boot之基于Redis实现MyBatis查询缓存解决方案 1. 前言 MyBatis是Java中常用的数据层ORM框架,笔者目前在实际的开发中,也在使用MyBatis.本文主要 ...

  3. 【MyBatis源码解析】MyBatis一二级缓存

    MyBatis缓存 我们知道,频繁的数据库操作是非常耗费性能的(主要是因为对于DB而言,数据是持久化在磁盘中的,因此查询操作需要通过IO,IO操作速度相比内存操作速度慢了好几个量级),尤其是对于一些相 ...

  4. 深入理解MyBatis一级缓存和二级缓存【超详细源码解析】

    视频地址:https://www.bilibili.com/video/BV1nP411A7Gu MyBatis的缓存是一个常见的面试题 一级缓存的作用域为何是 sqlSession.二级缓存的作用域 ...

  5. 深入了解MyBatis二级缓存

    深入了解MyBatis二级缓存 一.创建Cache的完整过程 我们从SqlSessionFactoryBuilder解析mybatis-config.xml配置文件开始: Reader reader ...

  6. springboot mybatis 事务_SpringBoot 下 Mybatis 的缓存

    "IT魔幻屋"致力于让你遇见更好的自己! 说起 mybatis,作为 Java 程序员应该是无人不知,它是常用的数据库访问框架.与 Spring 和 Struts 组成了 Java ...

  7. 通过源码分析MyBatis的缓存

    前方高能! 本文内容有点多,通过实际测试例子+源码分析的方式解剖MyBatis缓存的概念,对这方面有兴趣的小伙伴请继续看下去~ MyBatis缓存介绍 首先看一段wiki上关于MyBatis缓存的介绍 ...

  8. Mybatis二级缓存原理

    记录是一种精神,是加深理解最好的方式之一. 最近看了下Mybatis的源码,分析了二级缓存的实现方式,在这里把他记下来.虽然这不复杂,对这方面的博客也有很多,写的也很好.但我坚信看懂了是其一,能够教别 ...

  9. mybatis的缓存机制(一级缓存二级缓存和刷新缓存)和mybatis整合ehcache

    1      查询缓存 1.1  什么是查询缓存 mybatis提供查询缓存,用于减轻数据压力,提高数据库性能. mybaits提供一级缓存,和二级缓存. 一级缓存是SqlSession级别的缓存.在 ...

  10. Mybatis一级缓存,二级缓存的实现就是这么简单

    介绍 又到了一年面试季,所以打算写一点面试常问的东西,争取说的通俗易懂.面试高级岗,如果你说熟悉Mybatis,下面这些问题基本上都会问 Mybatis插件的实现原理? 如何写一个分页插件? Myba ...

最新文章

  1. mongodb基础知识_3
  2. Minio的容量算法及实际存储空间计算公式
  3. sscanf与正则表达式
  4. 微软服务器延迟,经过六个多月的延迟,微软终于推出Hyper-V Server 2019
  5. 解决Linux中文乱码问题
  6. 获取数据库值,再在其值上做修改
  7. 游戏开发之C++引用(C++基础)
  8. eclipse mac oracle数据库,Eclipse连接Oracle数据库的具体步骤
  9. 2011热门论坛排行top100
  10. linux下ssh安装教程,linux安装ssh
  11. word多级目录设置和自动生成目录
  12. 【电力电子】【2012.07】基于功率因数校正的三相整流器设计与仿真
  13. windows下nginx常见问题记录
  14. 青春不散场,CSDN毕业季有奖征文开启啦~~
  15. 原生js判断IE浏览器版本
  16. 模块一 day05 数据类型(上)
  17. 致敬2020——打工人的成长故事
  18. [软件人生]人生强硬也要懂得弯折——谈人性的两面
  19. 《通信技术导论(原书第5版)》——1.11 网络布线
  20. uniapp:生成二维码

热门文章

  1. 【非原创】codeforces 1070C Cloud Computing 【线段树树状数组】
  2. 剑指offer python版 剪绳子
  3. ui-sref与$state.go()的使用
  4. 【ZZ】神与学霸的区别
  5. 使用 IntraWeb (25) - 基本控件之 TIWRegion
  6. [JAVA][Eclipse]JVM terminated. Exit code=13
  7. jquery中防止和其他JS框架冲突的办法
  8. 解决VisualStudio2008下asp.net mvc开发向View中添加服务器控件崩溃的问题
  9. 本地环境测试二级域名
  10. python orderdict_Python OrderedDict字典排序方法详解