mybatis 缓存及encache

一 一级缓存

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

二 二级缓存

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

使用步骤

  1. mybatis.xml中开启二级缓存
        
        
  1. mapper.xml中配置cache标签

  1. 需要缓存的pojo类需要实现序列化接口
  2. 测试

statement的两个属性:

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

缺陷:

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

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

使用步骤

  1. 导入相关依赖
  
        
            org.ehcache.modules
            ehcache-core
            3.3.0
        
        
            org.mybatis.caches
            mybatis-ehcache
            1.1.0
        
  1. 引入缓存配置文件ehcache.xml
  2. 在需要缓存的mapper.xml中导入配置
  3. 测试

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

你可能感兴趣的:(mybatis 缓存及encache)