mybatis的缓存机制

一级缓存:

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

二级缓存:

  • namespace级别,不默认开启。多个会话共享一个mapper,也就是不同mapper下的操作互不影响。
  • 注意:在做关联查询时会出现脏数据问题。例如,一个mapper中关联查询其他表,那么当其他表发生改变时,不会清空这个mapper的缓存。
相关推荐
用户908324602732 天前
Spring AI 1.1.2 + Neo4j:用知识图谱增强 RAG 检索(上篇:图谱构建)
java·spring boot
用户8307196840823 天前
Spring Boot 集成 RabbitMQ :8 个最佳实践,杜绝消息丢失与队列阻塞
spring boot·后端·rabbitmq
Java水解3 天前
Spring Boot 视图层与模板引擎
spring boot·后端
Java水解3 天前
一文搞懂 Spring Boot 默认数据库连接池 HikariCP
spring boot·后端
洋洋技术笔记3 天前
Spring Boot Web MVC配置详解
spring boot·后端
初次攀爬者4 天前
Kafka 基础介绍
spring boot·kafka·消息队列
用户8307196840824 天前
spring ai alibaba + nacos +mcp 实现mcp服务负载均衡调用实战
spring boot·spring·mcp
Java水解4 天前
SpringBoot3全栈开发实战:从入门到精通的完整指南
spring boot·后端
初次攀爬者5 天前
RocketMQ在Spring Boot上的基础使用
java·spring boot·rocketmq
花花无缺5 天前
搞懂@Autowired 与@Resuorce
java·spring boot·后端