那天,我去面试一家中型互联网公司,面试官是个看起来三十多岁的大哥,一开口就直奔主题:“你说说 MyBatis 的一级缓存和二级缓存吧。”
我笑了笑,心里想着:“老哥,这不就是送分题嘛!”结果这一聊,我居然整整说了半个小时……
缓存,听起来就不一般
先别急着上技术,咱们先聊个生活场景。
有一天我和老婆在家看剧,我问她:“你记得这集上次看到哪儿了吗?”
她翻翻遥控器记录,说:“哦,历史记录里有,继续播放就好。”
我灵光一闪,跟她解释:“老婆你知道嘛,这跟我们 MyBatis 里的缓存原理差不多!我们项目里,查询结果也能存一份到缓存里,下次查一样的,就不用再走数据库啦~”
她翻了个白眼,说:“能不能别什么都扯到 MyBatis 上?”
嘿嘿,这不就是程序员嘛。
什么是一级缓存?(Session级别)
我们先从简单的开始。
一级缓存就是 SqlSession 级别的缓存,默认开启。也就是说,只要你在同一个 SqlSession 中重复执行同一条查询语句,MyBatis 就不会再去数据库查了,直接从缓存里拿!
举个例子:

这两次查询,其实只有第一次是真正查数据库,第二次是从缓存拿的,效率嗖嗖的。
但注意!只要 SqlSession 一关闭,缓存也就没了。就像你用微信小程序买菜,界面关了,记录就清了(除非你加了个本地存储)。
哪些操作会清除一级缓

最低0.47元/天 解锁文章
7万+

被折叠的 条评论
为什么被折叠?



