zoukankan      html  css  js  c++  java
  • Mybatis缓存

    Mybatis有两级缓存

    一级缓存(本机缓存):一级缓存是一直开启的。sqlSession级别缓存的Map

      与数据库同一次回话期间(session没有断开)查询到的数据会放在本地缓存(一级缓存)

      之后如果获取相同的数据,直接从缓存中拿,没必要再去查询数据库

      

      

    一级缓存失效情况(不使用当前一级缓存的情况)

    1、sqlSession不同,一级缓存失效

    2、sqlSession相同,查询条件不同,一级缓存没有数据

    3、sqlSession相同,两次查询期间,添加了增删改操作(这次增删改可能对缓存数据有修改)

    4、sqlSession相同,手动清空了缓存。session.clearChache()

     

    二级缓存(全局缓存):基于namespace级别的缓存

    工作机制:

      1、一个会话,查询一条数据,这个数据会放在当前会话的一级缓存中

      2、如果会话关闭,一级缓存的数据会保存到二级缓存中;新的会话查询信息,可以参照二级缓存的内容。

      3、不同的namespace查出的数据放在自己的缓存中

    使用:

      1、开启全局二级缓存配置:<setting name=”cacheEnabled” value=”true”><setting>

      2、mapper.xml中配置使用二级缓存

      <cache></cache>

      如果有工作空间配置过了,可以使用<cache-ref namespase>配置和工作空间相同的缓存机制

      3、我们的POJO需要实现序列化接口

    和缓存有关的设置

    1<select> useCache属性设置是否使用二级缓存

    2、每个增删改标签:flushCache属性,每次增删改操作后就会清除缓存,一级和二级缓存中都会被清空。

    3session.clearCache只清除一级缓存

    4、全局配置文件setting标签的cacheEnable属性;启用二级缓存

    5、全局配置文件setting标签的localCacheScope属性;本地缓存作用域;

    (一级缓存SESSION):当前会话的所有数据保存在会话缓存中

    STATEMENT:可以禁用一级缓存

     

  • 相关阅读:
    php解析XML的两种方法
    Windows下xampp搭配php环境以及mysql的设置和php连接Mysql数据库
    管道
    Ubuntu文件系统
    Ubuntu如何使用Vscode写C++代码
    Ubuntu如何百度云盘下载
    Debug程序的使用
    寄存器
    汇编指令
    汇编第二章_寄存器
  • 原文地址:https://www.cnblogs.com/chenkeyu/p/7842967.html
Copyright © 2011-2022 走看看