Mybatis二级缓存

什么是二级缓存?

  一级缓存是在两次发送同一个SQL请求,第一次执行完,就把数据存储在sqlsession中,第二次是从缓存中取出的数据,也就是说前后就只执行了一次SQL语句。

但每次SqlSession一关闭,一级缓存中的数据就消失。所以用到了二级缓存。

所以从这个角度讲:能跨sqlSession的缓存为二级缓存!

1、一个会话,查询一条数据,这个数据就会被放在当前会话的一级缓存中。
2、如果会话关闭,一级缓存中的数据会被保存到二级缓存中;新的会话查询信息,就可以参照二级缓存中。

步骤:

  第一步:

  在mybatis配置文件中,

  开启全局二级缓存配置:<setting name="cacheEnabled" value="true"/>

  第二步:

  在xxxMapper.xml中配置二级缓存

  <cache eviction="FIFO" flushInterval="60000" readOnly="false" size="1024" type=""></cache>

    flushInterval设置的是刷新的时间,单位是毫秒。

    

    readOnly:是否只读,true/false
      true:只读缓存;mybatis认为所有从缓存中获取数据的操作都是只读操作,不会修改数据。
        mybatis为了加快获取速度,直接就会将数据在缓存中的引用交给用户。不安全,速度快。
      false:非只读:mybatis觉得获取的数据可能会被修改。
        mybatis会利用序列化&反序列化的技术克隆一份。安全,速度慢。
    type:指定自定义缓存的全类名

    size:缓存的对象的数目,默认是1024个。

    eviction:达到缓存的极限,新进缓存对象的替换方式。

  第三步:

    将缓存的对象实现序列化接口。

  第四步:

    在第一次操作之后记得关闭sqlsession。只有在sqlsession关闭之后,才会把数据方法二级缓存空间。

 

posted @ 2017-09-06 15:37  薛小生  阅读(204)  评论(0编辑  收藏  举报