- 一级缓存
- 二级缓存
在维基百科上这样一段话:MyBatis支持声明式数据缓存(declarative data caching)。当一条SQL语句被标记为“可缓存”后,首次执行它时从数据库获取的所有数据会被存储在一段高速缓存中,今后执行这条语句时就会从高速缓存中读取结果,而不是再次命中数据库。
一级缓存:
一级缓存默认开启,作用在一个sqlSession上,即一个sqlSession执行两次相同语句查询只访问一次数据库,第二次执行查询语句时,会先在一级缓存中进行提取,如果不纯在才进行查询;在同个SqlSession中,查询语句相同的sql会被缓存,但是一旦执行新增或更新或删除操作,缓存就会被清除。实例:jtlgb的博客有实例说明与源码的分析。
二级缓存:
二级缓存的作用域是全局的,二级缓存在SqlSession关闭或提交之后才会生效。二级缓存跟一级缓存不同,一级缓存不需要配置任何东西,且默认打开。 二级缓存就需要配置一些东西。
配置:一、在mapper文件上加上 <cache />,
二、属性设置 cacheEnabled 为true
# application.yml
mybatis:
type-aliases-package:
type-handlers-package:
configuration:
cacheEnabled: true
-----------------------------
@mapper 文件加上 @CacheNamespace注解