定义了一个CachingExecutor , 当全局配置中的cacheEnabled=true 时,Configuration 的newExecutor()方法会对SimpleExecutor 进行装饰,返回被装饰过的Executor。CachingExecutor 中用HashMap 维护缓存。

在DefaultSqlSession 调用Executor 时,会先走到装饰器CachingExecutor。

定义了一个CacheKey 用于计算缓存Key,主要根据SQL 语句和参数计算。

手写自己的MyBatis框架-支持查询缓存相关推荐

  1. 手写自己的MyBatis框架-支持插件

    定义了一个@Intercepts 注解,目前还只能拦截Executor 的方法,所以属性只要配置方法名称. 定义Interceptor 接口,是所有自定义插件必须实现的接口. 定义Intercepto ...

  2. 手写自己的MyBatis框架-支持注解配置SQL

    定义了一个@Select 注解,加在方法上. 在Configuration 构造函数中的parsingClass() 中解析, 保存在mappedStatements 中(一个HashMap). 注意 ...

  3. 【MyBatis框架】查询缓存-一级缓存原理

    查询缓存 1.什么是查询缓存 mybatis提供查询缓存,用于减轻数据压力,提高数据库性能. mybaits提供一级缓存,和二级缓存. 缓存模式图如图 一级缓存是SqlSession级别的缓存.在操作 ...

  4. 手写自己的MyBatis框架-SqlSession

    我们已经分析了MeBatis 的主要对象和操作流程,应该从哪里入手? 当我们在psvm 操作的时候,第一个需要的对象是SqlSession.所以我们从应用层的接口SqlSession 入手. 那么我们 ...

  5. 【MyBatis框架】查询缓存-二级缓存-整合ehcache

    mybatis整合ehcache ehcache是一个分布式缓存框架. 1.分布缓存 我们系统为了提高系统并发,性能.一般对系统进行分布式部署(集群部署方式) 如图 不使用分布缓存,缓存的数据在各各服 ...

  6. 手写自己的MyBatis框架-Executor

    到了sqlSession 的selectOne()方法,这里我们要去调用Executor 的query()方法,这个时候我们必须传入SQL 语句和参数(根据statementId 获取). 问题来了: ...

  7. 手写自己的MyBatis框架-V2.0 可优化之处

    1 .在ResultSetHandler 中, 类型处理都是写死的, 能不能创建一个TypeHandler,把这些关系维护起来,处理所有类型的转换关系和自定义类型: 2.只实现了@Select 的注解 ...

  8. 手写自己的MyBatis框架-1.0 的不足

    V1.0 的不足 1.在Executor 中,对参数.语句和结果集的处理是耦合的,没有实现职责分离: 2.参数:没有实现对语句的预编译,只有简单的格式化(format),效率不高,还存在SQL 注入的 ...

  9. 手写自己的MyBatis框架-操作流程

    1.定义接口Mapper 和方法,用来调用数据库操作. Mapper 接口操作数据库需要通过代理类. 2.定义配置类对象Configuration. 3.定义应用层的API SqlSession.它有 ...

最新文章

  1. Microbiome:Kraken2进行16S物种注释又快又准,秒杀QIIME2
  2. 得到win7 win8的桌面句柄
  3. 标准C程序设计七---12
  4. Nordic系列芯片讲解九 (BLE事件回调机制解析)
  5. 8.Java有关变量的面试题
  6. Build path contains duplicate entry
  7. 数据库实操——pandas写入数据库数据
  8. 为什么要使用Redis?
  9. MyEclipse卡死解决方法
  10. 四元数左乘右乘_复数/四元数和转动/转动群
  11. [转]20个优秀网站助你征服CSS
  12. 软件工程造价是做什么的?
  13. 计算机信息管理学书心得,学习erp的心得体会共计5篇
  14. 陈景润定理对筛法理论的贡献
  15. 一款基于Vue的自适应Web在线音乐播放器
  16. 安卓常用6种设计模式总结
  17. 动态渲染element组件el-table表头项+自定义el-table列表项
  18. odoo开发:关于打印repair模块PDF报表,默认纸张头部有一大块空白无法修改的问题解决方案
  19. 网页播放器看视频页面绿屏解决方法
  20. iframe的滚动条隐藏后仍可滑动

热门文章

  1. Java Collection 学习
  2. Qt Load and Save PCL/PLY 加载和保存点云
  3. ubuntu_常用命令_01
  4. Spring学习(22)--- AOP之Advice应用(下)
  5. netty 粘包的解决策略
  6. 搞定ubuntu下环境变量的配置
  7. zigbee 编译source_zigbee_sensor_monitor_v1_2_1 vs2008 qt-win-opensource-src-4.4.3
  8. static class 静态类(Java)转
  9. Dart 基礎 - 4
  10. Winform 自定义窗体皮肤组件