Mybatis 缓存

本文介绍了Mybatis的一级和二级缓存机制。一级缓存为SqlSession级别,不同session间缓存独立;二级缓存为mapper级别,多个session操作同一mapper时可共享缓存。一级缓存的存储在Executor内部的HashMap中,二级缓存需实现Serializable接口,基于namespace,可能存储于硬盘。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

  1. 一级缓存
    一级缓存是SqlSession级别的缓存,一般一个请求对应一个SqlSession,缓存时 Executor 执行器内部会将sql信息和内容缓存进入HashMap中,不同的sqlSession间缓存互不影响。

  2. 二级缓存
    二级缓存是基于mapper级别的缓存,多个sqlSession操作一个Mapper的sql,可共用缓存。

一级缓存查看源码:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
看到最后 这个缓存被存入PerpetualCache中的cache hashmap中,其中key是hash计算出的值(包名类名sql名,offset ,limit,sql,sql的参数)以及其他信息

二级缓存:开启时要将类实现Serializable接口,因为二级缓存可能在硬盘中,它是基于namespace的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值