Java社招面试题:MyBatis 的一级、二级缓存?面试官问完我直接讲了半小时!

那天,我去面试一家中型互联网公司,面试官是个看起来三十多岁的大哥,一开口就直奔主题:“你说说 MyBatis 的一级缓存和二级缓存吧。”

我笑了笑,心里想着:“老哥,这不就是送分题嘛!”结果这一聊,我居然整整说了半个小时……

缓存,听起来就不一般

先别急着上技术,咱们先聊个生活场景。

有一天我和老婆在家看剧,我问她:“你记得这集上次看到哪儿了吗?”

她翻翻遥控器记录,说:“哦,历史记录里有,继续播放就好。”

我灵光一闪,跟她解释:“老婆你知道嘛,这跟我们 MyBatis 里的缓存原理差不多!我们项目里,查询结果也能存一份到缓存里,下次查一样的,就不用再走数据库啦~”

她翻了个白眼,说:“能不能别什么都扯到 MyBatis 上?”

嘿嘿,这不就是程序员嘛。

什么是一级缓存?(Session级别)

我们先从简单的开始。

一级缓存就是 SqlSession 级别的缓存,默认开启。也就是说,只要你在同一个 SqlSession 中重复执行同一条查询语句,MyBatis 就不会再去数据库查了,直接从缓存里拿!

举个例子:

这两次查询,其实只有第一次是真正查数据库,第二次是从缓存拿的,效率嗖嗖的。

但注意!只要 SqlSession 一关闭,缓存也就没了。就像你用微信小程序买菜,界面关了,记录就清了(除非你加了个本地存储)。

哪些操作会清除一级缓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

软件求生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值