![](https://img-blog.csdnimg.cn/2019092715111047.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Mybatis 源码
Mybatis 源码
君莫笑(๑˙ー˙๑)
欢迎互关,一起学习,共同进步
展开
-
SpringBoot 整合 Mybatis 源码阅读(2.3.1.RELEASE)
目录从 spring.factories 开始MybatisAutoConfiguration@MapperScanMapperScannerRegistrarrefreshinvokeBeanFactoryPostProcessorsConfigurationClassPostProcessor从 spring.factories 开始导入依赖 mybatis-spring-boot-starter 后,会出现如图所示这么一个包,主要看 MybatisAutoConfigurationMybati原创 2020-07-14 10:02:41 · 556 阅读 · 0 评论 -
Mybatis 插件开发与责任链模式
概述插件是用来改变或者扩展 Mybatis 的原有的功能,Mybatis 的插件就是通过继承 Interceptor 拦截器实现的。在没有完全理解插件之前禁止使用插件对 Mybatis 进行扩展,又可能会导致严重的问题。Mybatis 中能使用插件进行拦截的接口和方法如下:Executor(update、query 、 flushStatment 、 commit 、 rollback...原创 2020-05-08 13:26:25 · 624 阅读 · 0 评论 -
结合 Mybatis 的 logging 包源码理解适配器模式、代理模式
适配器模式适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁,将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。Target:目标角色,期待得到的接口.Adaptee:适配者角色,被适配的接口.Adapter:适配器角色,将源接口转换成目标接口.适用场景:当调用双方都不太容易修改的时候,为了复用...原创 2020-04-30 21:49:05 · 246 阅读 · 0 评论 -
Mybatis datasource 包里的工厂模式
结构图如图所示,UnpooledDataSourceFactory 生产 UnpooledDataSource,PooledDataSourceFactory 生产 PooledDataSource;UnpooledDataSourceFactory 和 PooledDataSourceFactory 实现了 DataSourceFactory 接口,UnpooledDataSource 和 ...原创 2020-05-01 10:58:00 · 321 阅读 · 0 评论 -
Mybatis 的获取连接与回收连接:popConnection 与 pushConnection
目录PooledConnectionPollStatePooledDataSourcepopConnection获取连接流程图pushConnection回收连接流程图PooledConnectionclass PooledConnection implements InvocationHandler { private static final String CLOSE = "clo...原创 2020-05-01 17:55:44 · 1335 阅读 · 0 评论 -
结合 Mybatis 的 cache 包源码理解装饰器模式
目录装饰器模式结构角色优势cache 包里的装饰器模式抽象构件 Cache具体构件 PerpetualCache具体装饰 BlockingCache装饰器模式装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,是一种用于代替继承的技术,无需通过继承增加子类就能扩展对象的新功能。使用对象的关联关系代替继承关系,更加灵活,同时避免类型体系的快速膨胀。结构角色...原创 2020-05-01 21:57:00 · 348 阅读 · 0 评论 -
Mybatis 的 CacheKey
前置文章Mybatis 的一级缓存与二级缓存结合 Mybatis 的 cache 包源码理解装饰器模式CacheKey 是干嘛的简单的说就是 cache 的 key 值,如下图MyBatis 中涉及到动态 SQL 的原因,缓存项的 key 不能仅仅通过一个 String 来表示,所以通过CacheKey 来封装缓存的 key 值,CacheKey 可以封装多个影响缓存项的因素nam...原创 2020-05-02 12:05:56 · 2364 阅读 · 0 评论 -
CachingExecutor 和 BaseExecutor 里的 query
CachingExecutor @Override public <E> List<E> query(MappedStatement ms, Object parameterObject, RowBounds rowBounds, ResultHandler resultHandler) throws SQLException { //获取sql语句信息,包括占位...原创 2020-05-02 14:48:38 · 320 阅读 · 0 评论 -
Mybatis 里的 Configuration 储存了什么
目录Configuration 的重要性重要属性Configuration 的重要性Mybatis 启动初始化的核心就是将所有 xml 配置文件信息加载到 Configuration 对象中, Configuration是单例的,生命周期是应用级的。重要属性 protected Environment environment; //下面2个是反射模块要用到的 /*MyBati...原创 2020-05-05 16:40:40 · 350 阅读 · 0 评论 -
Mybatis 的初始化与建造者模式
目录建造者模式结构角色使用场景与工厂模式的区别建造者模式在Mybatis里的应用Mybatis 的初始化入口XMLConfigBuilderXMLMapperBuilderMapperBuilderAssistant建造者模式建造者模式(Builder Pattern)指的是将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。它使用多个简单的对象一步一步构建成一个复杂的对象。...原创 2020-05-04 10:54:46 · 447 阅读 · 0 评论 -
面试官:为什么使用 Mapper 接口就能对数据库进行访问?
目录宏观理解源码验证MapperRegistryMapperProxyFactoryMapperProxyMapperMethod宏观理解拿到的 mapper 其实是一个代理对象,底层调用的是 SqlSession 的方法,SqlSession 的方法里其实调用的 Executor 的方法。源码验证跟 getMapper:类 SqlSession @Override publ...原创 2020-05-07 12:12:51 · 1595 阅读 · 2 评论 -
Spring 整合 Mybatis 与源码分析
目录配置依赖配置配置文件配置源码SqlSessionFactoryBeanMapperScannerConfigurer配置依赖配置pom.xml<!-- mysql驱动 --><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java<...原创 2020-05-07 15:46:04 · 159 阅读 · 0 评论