一 一级缓存
在mybatis中一级缓存是自动启动的,不需要我们手动开启,也是sqlSession级别的缓存,当sqlSession关闭后,缓存也将被清空;
二 二级缓存
在mybatis中,二级缓存需要我们手动开启,二级缓存和一级缓存最大的区别就是二级缓存的范围要比一级缓存大,二级缓存是namespace级别的缓存,即多个mapper如果它们的namespace相同那么它们可以共享一个缓存。
使用步骤:
- 在
mybatis.xml中开启二级缓存
<!--
缓存配置
-->
<setting name="cacheEnable" value="true"/>
- 在
mapper.xml中配置cache标签
<cache/>
- 需要缓存的
pojo类需要实现序列化接口 - 测试
statement的两个属性:
- useCache:是否使用缓存(默认是true)
- flushCache:刷新缓存,即每次执行
sql后是否刷新缓存(清空),在执行update、insert、delete等操作如果没有刷新还粗可能就会带来脏数据。
缺陷:
- 在执行
commit()时,缓存会被清空 -
mybatis二级缓存只是将数据简单的放入到内存中,安全性不高
三 EnCache 缓存
EnCache 是一个纯java的缓存的框架,是一种广泛使用的分布式缓存。
使用步骤:
- 导入相关依赖
<!--缓存整合-->
<dependency>
<groupId>org.ehcache.modules</groupId>
<artifactId>ehcache-core</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>org.mybatis.caches</groupId>
<artifactId>mybatis-ehcache</artifactId>
<version>1.1.0</version>
</dependency>
- 引入缓存配置文件
ehcache.xml - 在需要缓存的
mapper.xml中导入配置 - 测试
demo(根据id查用用户信息)_10encache