Mybatis的缓存机制

Mybatis的缓存包括一级缓存和二级缓存。

一级缓存是SqlSession级别,在同一个SqlSession对象中使用,是自动开启,不能关闭,只能清除;二级缓存mapper级别,可在多个SqlSession中共享,需要手动开启。

一级缓存

同一个SqlSession对象,在没有收到改变数据的请求之前,第二次查询直接从缓存中取出上次查询的结果。
缓存失效:1.不是同一个SqlSession对象 2.两次的查询条件不同 3.在两次查询之间,有增、删、改commit,会清空缓存 4.两次之间手动清空缓存clearCache()。

二级缓存

1.mybatis的全局配置文件中手动开启:


2.在相应的mapper映射文件中 加入

......"

缓存失效:在两次查询之间,有增、删、改commit,会清空缓存。mapper中的所有缓存绑定在同一个命名空间中,一条语句对数据的更改会删除所有的mapper级缓存,可以通过配置useCache 和 flushCache改变默认的方式,实现每条语句与mapper的缓存交互。

  1. 禁用

    4.刷新某个

    1. 默认二级缓存是关闭的,可以设置全局打开,但在使用中一般是针对某个mapper的namespace打开二级缓存,所有的select都会打开二级缓存。
    
    
    
    

    需要关闭namespace下的某个查询的二级缓存