Mybatis 缓存

什么是缓存

  存在于内存中的临时数据

为什么使用缓存

  减少和数据库的交互次数,提高执行效率

什么样的数据能使用缓存, 什么样的数据不能使用

  适用缓存:

    经常查询 并且不经常改变的

    数据的正确与否 对最终结果影响不大的

  不适用缓存:

    经常改变的数据

    数据的正确结果与否对最终结果影响很大的

Mybatis中的一级缓存和二级缓存:

一级缓存

  他指的是Mybatis中SqlSession对象的缓存

  当我们执行查询后, 查询的结果会同时存入到SqlSession为我们提供的一块区域中

  该区域的结构是一个Map, 当我们再次查询同样的数据, mybatis会先去SqlSession中查询是否有, 有的话直接拿出来用

  一级缓存是 SqlSession 级别的缓存,

  当调用 SqlSession 的修改,添加,删除,commit(),close()等方法时,就会清空一级缓存。 

  sqlSession.clearCache();//此方法也可以清空缓存

  这样做的目的为了让缓存中存储的是最新的信息,避免脏读。 

 

二级缓存:

  它指的是Mybatis中SqlSessionFactory对象的缓存, 由同一个SqlSessionFactory对象创建的SqlSession共享其缓存

   存放的是数据,而不是对象(不同于一级缓存)

 

  二级缓存的使用步骤:

    第一步:  让Mybatis框架支持二级缓存(在SqlMapConfig.xml中配置)  

      <settings>
              <setting name="cacheEnabled" value="true"/>
      </settings>

 

 

 

      第二步: 让当前的映射文件支持二级缓存(在持久层接口对应的映射文件中配置)

 

<!--开启user支持二级缓存-->
    <cache/>

 

     

      第三步: 让当前的操作支持二级缓存(在select标签中配置)

 <select id="findById" parameterType="INT" resultType="user" useCache="true">
        select * from user where id = #{uid}
</select>

 

 

 

posted @ 2019-04-27 11:38  萌胖胖  阅读(137)  评论(0编辑  收藏  举报