mybatis的缓存机制

1.mybatis的缓存可以分为一级缓存和二级缓存,一级缓存是sqlsession级别的,二级缓存是application全局的。下面是图例。

在这里插入图片描述

在这里插入图片描述
2.一级缓存
当一次session会话建立的时候,会通过executor执行相应的操作,拿到的数据会缓存到cache中,第二次在查询一样的查询时,会首先到cache中找缓存中的数据,如果有的话就返回,没有的话就查询数据库,并返回然后存到缓存中,当进行update操作时,缓存会更新,增删改。session关闭时缓存清空。
3.二级缓存
二级缓存是一个全局性的缓存,多个session可以共享其中的缓存,但是它的颗粒度更小,也就是更细,里面的缓存对应一个mapper,以命名空间区分,多个sqlsession也可以共用一个cache。
工作原理是这样的,当sqlsession建立时,会先从二级缓存中找cache对应的查询,如果没有则,继续找一级缓存。
二级缓存的cachingcache是对一级缓存的装饰者模式构建的。以此来增强功能。
4.如何在缓存中查找到匹配的查询
由于cache中是考hashmap来维护查询的结果的,所以需要一个key和value来存缓存。
根据statementid和rowbount,sql语句和参数来确定key的。

参考:https://blog.csdn.net/luanlouis/article/details/41280959

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值