十八、【源码】二级缓存

源码地址:https://github.com/mybatis/mybatis-3/

仓库地址:https://gitcode.net/qq_42665745/mybatis/-/tree/18-second-levelcache

二级缓存

二级缓存,namespace级别,默认关闭,需要手动开启,在xml加入标签即可开启

1.解析XML时

  • 需额外解析并创建一个二级缓存,每个mapper对应创建一个二级缓存

  • 解析Sql语句的时候将所在mapper xml对应的二级缓存也封装到MapperedSatement中

2.使用

  • 创建Executor时会先创建SimpleExecutor,他是直接和数据库操作的,如果开启了二级缓存,使用CacheExecutor对SimpleExecutor进行装饰,返回executor对象
  • 执行查询时,会先从二级缓存中找,如果有直接返回;没有就委派给SimpleExecutor从数据库查询,然后将数据库查到的结果使用TransactionalCache事务缓存封装,做临时二级缓存,再使用TransactionalCacheManager进行管理,当close/commit时会将TransactionalCache的缓存内容写入真正的二级缓存中去。

如果一级缓存和二级缓存都开启,执行顺序是:二级缓存->一级缓存->数据库
另外二级缓存也不是一直有效的,也会失效,而且集群环境下可能有问题,所有不建议使用

在这里插入图片描述

最近更新

  1. 什么是voc数据,和coco数据的区别是什么?

    2024-06-08 06:48:01       0 阅读
  2. Spring Boot 创建定时任务

    2024-06-08 06:48:01       0 阅读
  3. Redis

    2024-06-08 06:48:01       0 阅读
  4. C语言2D游戏

    2024-06-08 06:48:01       0 阅读
  5. Docker 容器出现 IP 冲突

    2024-06-08 06:48:01       1 阅读
  6. 构建安全稳定的应用:SpringSecurity实用指南

    2024-06-08 06:48:01       1 阅读
  7. 事务的范围比锁的范围大

    2024-06-08 06:48:01       1 阅读

热门阅读

  1. Linux入门学习指南

    2024-06-08 06:48:01       8 阅读
  2. 设计模式之模板方法模式

    2024-06-08 06:48:01       7 阅读
  3. Linux基于V4L2的视频捕捉

    2024-06-08 06:48:01       11 阅读
  4. Unity3D DOTS 10W GPU Intancing 动画与合批优化详解

    2024-06-08 06:48:01       9 阅读
  5. Excel中的SUMPRODUCT函数:使用方法与案例分析

    2024-06-08 06:48:01       9 阅读
  6. 【MyBatisPlus条件构造器】

    2024-06-08 06:48:01       10 阅读
  7. [DT] 翻译笔记

    2024-06-08 06:48:01       7 阅读
  8. uniapp vue 隐藏button的边框

    2024-06-08 06:48:01       10 阅读
  9. 零、测试开发前置知识

    2024-06-08 06:48:01       10 阅读
  10. 【常用工具系列】Git 教程——从入门到大师

    2024-06-08 06:48:01       13 阅读
  11. Freemarker

    2024-06-08 06:48:01       10 阅读
  12. MySQL学习——获取数据库和表格的信息

    2024-06-08 06:48:01       11 阅读
  13. solidity的modifier修饰符

    2024-06-08 06:48:01       9 阅读