MyBatis缓存机制
时间: 2023-05-26 22:03:50 浏览: 128
J2EE企业级项目开发-3期(KC007) 6.5 MyBatis的事务管理和缓存机制文档.doc
MyBatis缓存机制是指,在数据库查询操作执行完成后,结果被缓存起来,下次执行同样的查询操作时,直接从缓存中获取结果而不是再向数据库发起查询请求。
在MyBatis中,缓存分为一级缓存和二级缓存。
1. 一级缓存
一级缓存是指MyBatis内部的缓存机制,也称为本地缓存。当我们首次调用某个Mapper接口的方法时,MyBatis会将查询结果缓存到该Mapper接口对应的SqlSession中。
因为缓存是存储在SqlSession对象中的,因此同一个SqlSession对象内部的多次查询会被缓存起来,下次再使用相同的SqlSession对象时,直接从缓存中获取结果。但是,一旦SqlSession对象被关闭,缓存就会消失。
2. 二级缓存
二级缓存是指MyBatis的全局缓存机制。当一个Mapper接口的查询结果被缓存在SqlSession内部的一级缓存中后,如果我们开启了二级缓存,这个结果还会被缓存到二级缓存中。这样,在下一次使用相同的Mapper接口时,MyBatis就可以从二级缓存中获取结果。
二级缓存是存储在Mapper接口对应的SqlSessionFactory中的,因此多个SqlSession对象之间可以共享同一个Mapper接口的二级缓存数据。
需要注意的是,只有Mapper接口的查询结果才可以被缓存,更新、添加、删除等SQL操作不会被缓存。
为了使用MyBatis的二级缓存,我们需要在Mapper接口中添加一个cache标签,例如:
<cache eviction="LRU" flushInterval="10000" size="1024"/>
其中,eviction属性指定缓存的清除策略,flushInterval属性指定缓存刷新的时间间隔,size属性指定缓存的最大容量。
阅读全文