mybatis的缓存机制

一级缓存:

  • sqlSession级别,默认开启。存储的数据结构就是一个map,key就是包含由statementId、params、boundSql、rowBounds组成的,value就是查出的对象。也就是说,同一个mapper、同一个方法相同的sql及参数。
  • 注意:在spring或springboot整合的mybatis中,每次执行一个sql都会创建一个sqlSession,所以一级缓存失效。但可以加上注解@Transactional,在事务范围内共享一个sqlSession

二级缓存:

  • namespace级别,不默认开启。多个会话共享一个mapper,也就是不同mapper下的操作互不影响。
  • 注意:在做关联查询时会出现脏数据问题。例如,一个mapper中关联查询其他表,那么当其他表发生改变时,不会清空这个mapper的缓存。
相关推荐
₍˄·͈༝·͈˄*₎◞ ̑̑码10 小时前
MyBatis操作数据库
数据库·mybatis
m0_5873830011 小时前
全民健身解决方案软件开发实战:从架构设计到落地指南
java·spring boot·spring·架构·需求分析
刃神太酷啦12 小时前
Redis 进阶核心:持久化 (RDB/AOF)、事务与主从复制全解析----《Hello Redis!》(5)
linux·c语言·数据库·c++·redis·缓存·bootstrap
azhou的代码园15 小时前
基于RFM模型的中小型企业客户管理系统
java·人工智能·spring boot·毕业设计
CDN36015 小时前
CDN 缓存命中率优化实战:解决出海业务回源过多、跨洋延迟高,缓存调优完整指南
缓存·cdn加速
行百里er15 小时前
BeanPostProcessor:包装 Feign Client
spring boot·后端·监控
花生了什么事o15 小时前
自定义Spring Boot Starter全流程
java·spring boot·后端
咖啡星人k16 小时前
2026 上下文缓存进阶:把前缀契约写进SPEC,MonkeyCode 云端跑通
人工智能·机器学习·缓存
hweiyu0016 小时前
Redis命令:TTL
redis·缓存
摇滚侠16 小时前
《SpringBoot 3:入门与应用实战》第 12 章 JDBC 与事务 使用 JdbcTemplate 阅读笔记 31
android·spring boot·笔记