一级缓存  

Mybatis一级缓存的作用域是同一个SqlSession,在同一个sqlSession中两次执行相同的sql语句,第一次执行完毕会将数据库中查询的数据写到缓存(内存),第二次会从缓存中获取数据将不再从数据库查询,从而提高查询效率。当一个sqlSession结束后该sqlSession中的一级缓存也就不存在了。Mybatis默认开启一级缓存。

简单说

session级别的缓存

当用户对同一个session进行多次查询的时候,只会查询一次数据库

后面的查询直接返回缓存的数据

当提交事务结束session会把一级缓存中的数据清除

二级缓存

Mybatis二级缓存是多个SqlSession共享的,其作用域是mapper的同一个namespace,不同的sqlSession两次执行相同namespace下的sql语句且向sql中传递参数也相同即最终执行相同的sql语句,第一次执行完毕会将数据库中查询的数据写到缓存(内存),第二次会从缓存中获取数据将不再从数据库查询,从而提高查询效率。Mybatis默认没有开启二级缓存需要在setting全局参数中配置开启二级缓存。

 

工作原理就是当开启了二级缓存,mybatis会把一级缓存的数据序列化至磁盘中

当开始一个新的session再次查询时会尝试从二级缓存中查询是否有数据,

有就直接返回缓存中的数据。

开启二级缓存

  在MyBatis的配置文件启动

在需要开启二级缓存的表映射文件中增加 cache标签

  

  使用二级缓存的实体类实现Serializable接口

最新文章

  1. CodeForces 261B Maxim and Restaurant 解法汇总
  2. Stored Procedure 里的 WITH RECOMPILE 到底是干麻的?
  3. 关于安装Visual Studio 2015 RC版卡主不动的解决方案
  4. SQL Server への接続を許可するファイアーウォール設定
  5. tinyxml安装和使用
  6. tee 命令基本使用方法、输出到多个文件
  7. maven和jdk版本不匹配
  8. 第二个sprint第一天
  9. 重装win7系统的方法
  10. iOS开发 .framework的Optional(弱引用)和Required(强引用)区别
  11. 归并排序的C语言实现
  12. 【HDOJ】1042 N!
  13. E. Three States - Codeforces Round #327 (Div. 2) 590C States(广搜)
  14. 解析嵌套json字符串,一个json字符串中嵌套另一个json字符串
  15. linux修改文本模式下的分辨率(CentOS6.4)
  16. iOS应用程序内存查看工具
  17. 没有文件扩展“.js”的脚本引擎问题解决
  18. nginx+多个tomcat
  19. Tars 服务调服务
  20. nth-of-type(n)

热门文章

  1. 10-cmake语法-CMakeParseArguments
  2. Windbg Watch(监视)窗口的使用
  3. pychram-redis破解
  4. cf1179D
  5. 蒟蒻所见之DP
  6. CF1174E Ehab and the Expected GCD Problem(DP,数论)
  7. 【BigData】Java基础_创建一个订单类
  8. Servlet 下载文件及支持中文文件名
  9. Centos 6.X查看和设置时间时区
  10. 日志篇 貌似win10有个磁盘bug,非常非常严重... 硬盘解密之后无法访问,参数错误 BitLocker解密