mybatis的缓存机制

一级缓存:

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

二级缓存:

  • namespace级别,不默认开启。多个会话共享一个mapper,也就是不同mapper下的操作互不影响。
  • 注意:在做关联查询时会出现脏数据问题。例如,一个mapper中关联查询其他表,那么当其他表发生改变时,不会清空这个mapper的缓存。
相关推荐
指令集梦境1 小时前
Cursor + Spring Boot实战:从零写一个RESTful API
spring boot·后端·restful
INFINI Labs4 小时前
Elasticsearch 6/7/8 到 Easysearch 2.x 迁移指南
大数据·elasticsearch·mybatis·向量·snapshot
普通网友4 小时前
springboot之集成Elasticsearch
spring boot·后端·elasticsearch
学Linux的语莫4 小时前
redis的数据类型和使用
数据库·redis·缓存
invicinble4 小时前
关于flowable流程引擎技术栈相关
spring boot
189228048617 小时前
NV086固态MT29F16T08EWLCHD8-TES:C
大数据·服务器·人工智能·科技·缓存
倒流时光三十年10 小时前
第十八章 搜索历史保存功能实现记录
spring boot·微信小程序
齐潇宇10 小时前
Redis数据库基础
linux·数据库·redis·缓存
倒流时光三十年10 小时前
第十七章 投票页面增加搜索功能
spring boot·微信小程序
CodeStats10 小时前
从JDBC时代到MyBatis封神:SQL全流程手写ORM实战
sql·mysql·mybatis