mybatis的缓存机制

一级缓存:

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

二级缓存:

  • namespace级别,不默认开启。多个会话共享一个mapper,也就是不同mapper下的操作互不影响。
  • 注意:在做关联查询时会出现脏数据问题。例如,一个mapper中关联查询其他表,那么当其他表发生改变时,不会清空这个mapper的缓存。
相关推荐
新world5 小时前
mybatis-plus从入门到入土(三):持久层接口之IService
mybatis
双力臂4047 小时前
Spring Boot 单元测试进阶:JUnit5 + Mock测试与切片测试实战及覆盖率报告生成
java·spring boot·后端·单元测试
itLaity8 小时前
基于Kafka实现简单的延时队列
spring boot·分布式·kafka
midsummer_woo8 小时前
基于spring boot的医院挂号就诊系统(源码+论文)
java·spring boot·后端
daixin88489 小时前
什么是缓存雪崩?缓存击穿?缓存穿透?分别如何解决?什么是缓存预热?
java·开发语言·redis·缓存
daixin884811 小时前
Redis过期数据的删除策略是什么?有哪些?
数据库·redis·缓存
EmpressBoost13 小时前
谷粒商城170缓存序列化报错
java·spring·缓存
苦学编程的谢14 小时前
MyBatis_3
java·开发语言·后端·mybatis
guojl14 小时前
MyBatis最佳实践
后端·微服务·mybatis
fouryears_2341714 小时前
什么是JSON,如何与Java对象转化
java·spring boot·spring·json