MyBatis 提供了一级缓存和二级缓存策略,一级缓存是作用在SqlSession级别上的,而二级缓存则是作用在Mapper级别上的( 即作用在 namespace上),MyBatis 默认是开启的一级缓存,实际缓存的数据是维护在一个HashMap的数据结构中;不同SqlSession中缓存的数据是户部影响的。

一级缓存的生命周期

    MyBatis在开启一个Session会话时,会创建一个sqlSession对象,该对象同时会创建一个Executor对象,在Executor对象内部维护了一个PerpetualCache对象,在SqlSession中的所用缓存数据都存在PerpetualCahce对象中。当SqlSession对象关闭后,PerpetualCache数据清空,且不能在使用;当SQLSession对象执行了comit操作,Mybatis为了保证数据的唯一性,将会释放PerpetualCache中的数据,但是该对象以后可用;当SqlSession调用了清空缓存的方法(clearCache()),也将会释放PerpetualCache中的数据,但是该对象以后可用。

手动开启二级缓存的流程

1、创建MyBatis-config.xml

在该配置文件下设置开启二级缓存

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration> <!-- 全局配置参数,需要时在设置-->
<settings>
<setting name="cacheEnabled" value="true"/>
</settings> </configuration>

2、在applicationContext.xml配置文件下指定MyBatis-config.xml的位置,该代码放在SQLSessionFactoryBean这个实体bean的属性下。

<!-- mybatis配置文件的位置 -->
<property name="configLocation" value="classpath:mybatis-config.xml" />

3、在需要开启二级缓存的Mapper.xml中写入如下代码

<cache  />

通过以上步骤,MyBatis的二级缓存就可以启用。

最新文章

  1. AC日记——砍树 codevs 1388
  2. 1.2 Quartz 2D 内存管理
  3. lua练手基础
  4. 《JavaScript高级程序设计》chapter 1: javascript 简介
  5. 一些Discuz!代码
  6. (WPF) MVVM: ComboBox Binding, XML 序列化
  7. [Java] final的意义
  8. 《Usermod:user lee is currently logged in 家目录不能改变解决方法》
  9. The Shortest Path in Nya Graph
  10. VB2012读取xml
  11. ISO/IEC14443和15693的对比有何具体区别
  12. nisi 脚本示例
  13. httping:测量网站延迟
  14. 《Linux内核分析》第八周学习笔记
  15. 振兴中华|2013年蓝桥杯A组题解析第三题-fishers
  16. istio分布式调用链Jaeger
  17. PHP swoole process的使用
  18. 如何在SpringMVC中获取request对象
  19. Lua面向对象 --- 单例
  20. javascript正则表达式验证密码(必须含数字字符特殊符号,长度4-16位之间)

热门文章

  1. React 中阻止事件冒泡的问题
  2. JAVA基础第四章-集合框架Collection篇
  3. 带你了解SDL
  4. 面试前必须要知道的Redis面试题
  5. Asp.Net Core 轻松学-多线程之Task快速上手
  6. JavaScript 新语法详解:Class 的私有属性与私有方法
  7. SAP MM 巴西采购订单中的NCM Code
  8. SQL执行WebService
  9. Exp5 Msf基础应用 20164312 马孝涛
  10. Android 音视频同步机制