Mybatis一级缓存二级缓存

一级缓存:

范围:同一个SqlSession对象
过程:

1:第一次查询张三会经历两个步骤:

(1)向数据库发送SQL语句查询张三
(2)并将张三放入一级缓存中

2:第N次查询张三只经历一个步骤

(1)直接从一级缓存中获取张三
在这里插入图片描述
Mybatis默认开启 一级缓存,如果用同样的SqlSession对象查询相同的数据时,则只会在第一次查询时向数据库发送SQL语句,并将查询的结果放在SQLSESSION中(作为缓存),后续再次查询该同样的对象时,则直接从缓存中查询该对象即可(省略了数据库的访问,提高性能)

二级缓存:

范围:同一个namespace
过程:

1.两个相同的SqlSession1产生的xxxMapper对象查询李四

(1)向数据库发送SQL语句查询李四
(2)并将李四放入一级缓存中
(3)第N次查询则直接从一级缓存中获取

2.另一个SqlSession2产生的xxxMapper对象查询李四

(1)如果二级缓存中没有李四,则此次查询需要重新向数据库发送SQL语句
(2)虽然一级缓存中有李四,但是是由SqlSession1共享的,SqlSession2是不共享的,所以SqlSession2需要重新向数据库中发送SQL语句
(3)如果SqlSession查询完李四后,执行了close()方法,则将李四放入了二级缓存中,又因为SqlSession1和SqlSession2的根源是同一个namespace,所以共享二级缓存,所以现在查询李四,则直接从二级缓存中获取,不需要向数据库发送SQL语句了
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值