mybatis 缓存及encache

一 一级缓存

mybatis中一级缓存是自动启动的,不需要我们手动开启,也是sqlSession级别的缓存,当sqlSession关闭后,缓存也将被清空;

二 二级缓存

mybatis中,二级缓存需要我们手动开启,二级缓存和一级缓存最大的区别就是二级缓存的范围要比一级缓存大,二级缓存是namespace级别的缓存,即多个mapper如果它们的namespace相同那么它们可以共享一个缓存。

使用步骤

  1. mybatis.xml中开启二级缓存
        <!--
            缓存配置
        -->
        <setting name="cacheEnable" value="true"/>
  1. mapper.xml中配置cache标签
<cache/>
  1. 需要缓存的pojo类需要实现序列化接口
  2. 测试

statement的两个属性:

  • useCache:是否使用缓存(默认是true)
  • flushCache:刷新缓存,即每次执行sql后是否刷新缓存(清空),在执行update、insert、delete等操作如果没有刷新还粗可能就会带来脏数据。

缺陷:

  • 在执行commit()时,缓存会被清空
  • mybatis二级缓存只是将数据简单的放入到内存中,安全性不高
三 EnCache 缓存

EnCache 是一个纯java的缓存的框架,是一种广泛使用的分布式缓存。

使用步骤

  1. 导入相关依赖
  <!--缓存整合-->
        <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>
  1. 引入缓存配置文件ehcache.xml
  2. 在需要缓存的mapper.xml中导入配置
  3. 测试

demo(根据id查用用户信息)_10encache

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容