Mybaris缓存(一级缓存,二级缓存)

1、简介

       Mybatis本身提供一定的缓存功能,用于查询时进行缓存,减轻数据压力,提高数据库性能。Mybatis缓存分为一级缓存和二级缓存,默认开启一级缓存,二级缓存需要手动开启。下面是其缓存的示意图

一级缓存是sqlSession级别的,二级缓存是Mapper(namespace)级别的。下面对一级缓存和二级缓存进行相应的介绍。

2、一级缓存

      一级缓存是SqlSesison级别的缓存。操作数据库时都需要构造一个sqlSession对象,在对象中就有一个数据结构(HashMap)来存储缓存数据。不同sqlSession之间的缓存数据区域是相互隔离的,互不影响。Mybatis默认开启一级缓存。

      如下图所示:

      第一次查询用户id为1的数据,会先在改sqlSession的缓存中取查是否有id=1的数据,如果没有,从数据库查询数据,并将数据存储在一级缓存中。

      第二次查询id为1的数据时,如果是在同一个sqlSession中执行的话,会直接从缓存中拿数据,不需要查数据库。

      如果中间sqlSession执行了commit操作(执行插入、更新、删除),就会清空sqlSession中的一级缓存。这样主要是为了让缓存中的数据是最新的,避免脏读。

2、二级缓存

      二级缓存是mapper(namespace)级别的缓存。执行同一个mapper文件就会启动一个二级缓存(二级缓存开启的话)。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值