mybatis源码分析缓存

关于mybatis的缓存网上有不少相关的文章,本人首先是看过文章,可是本着学习态度和加深理解,如下是我的跟踪源码的记录。html

缓存分三种,1)一级缓2)二级缓存(通常指myatis内置的实现缓存方式)3)引入第三方缓存(本质上就是二级缓存的一种实现方式),引用http://blog.csdn.net/grhlove123/article/details/47808025数据库

1) 一级缓存缓存

    1 首先一级缓存也就是查询缓存,所谓的查询缓存其实就是一个HashMap<Object,Object>mybatis

    2 整个查询缓存的流程,也就是map的数据的存入、获取和更新学习

   ① 首先缓存的存入和获取,在每次查询以前mybatis是先去缓存中根据拼接出来的key来查找数据,当没有找到时,将执行数据库查询,而后将结果集存入缓存,以下图源码截图.net

                图 1-1htm

           图  1-2blog

   ② 缓存的更新是在执行更新数据(包含增删改)操做时清除全部查询缓存get

                    图 2-1源码

            图 2-2

2)二级缓存

    1 二级缓存默认全局开启,可是局部不开启,引用https://www.cnblogs.com/QQParadise/articles/5109633.html

二级缓存其实也是HashMap而且缓存数据的存入、获取和更新(包含增删改)和一级缓存同样,可是这里是两个HashMap,首先是mybatis内置不少种实现方式,第一个HashMap就是用来存放执行实现方式的缓存,第二个就是存放数据的,以下图

                                图 3-1 

                            图 3-2

                    图 3-3

相关文章
相关标签/搜索