Mybatis二级缓存执行流程
时间: 2024-01-17 15:05:00 浏览: 36
当开启了二级缓存后,同一个命名空间(namespace)下的所有操作语句都会影响一个共同的cache,也就是二级缓存会被多个SqlSession共享,成为一个全局的变量。在数据查询执行的流程中,首先会经过二级缓存,然后是一级缓存,最后是数据库。具体的执行流程如下:
1. 当进行数据库操作时,首先会检查是否开启了二级缓存。如果开启了二级缓存,将会在CachingExecutor中进行二级缓存的查询。
2. 如果查询的数据在二级缓存中已存在,则直接从二级缓存中获取数据,并返回结果。
3. 如果查询的数据不在二级缓存中,则会继续执行查询操作,并将查询的结果存入二级缓存中以供后续使用。
4. 接下来,会进入一级缓存的查询流程。在同一个SqlSession内部,如果之前已经查询过相同的语句并且结果存在于一级缓存中,则直接从一级缓存中获取数据并返回结果。
5. 如果一级缓存中没有查询到结果,则会继续执行数据库查询操作,并将查询的结果存入一级缓存中以供后续使用。
6. 最后,如果在一级缓存中仍然没有查询到结果,则会从数据库中获取数据,并将查询结果存入一级缓存中。
总结起来,MyBatis的二级缓存执行流程是先经过二级缓存,再经过一级缓存,最后才是数据库查询。这样可以提高数据查询的效率,减少对数据库的访问次数。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [【MyBatis】MyBatis 二级缓存全详解](https://blog.csdn.net/qq_21383435/article/details/124768956)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]