![](https://img-blog.csdnimg.cn/20210511155216583.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
mybatis基于与源码分析
个人学习记录所用,水平有限可能会出现一些问题,请指出
大龄码农生活
这个作者很懒,什么都没留下…
展开
-
Mybatis学习总结第五课---Mybatis缓存机制
MyBatis缓存介绍正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的支持一级缓存: 基于PerpetualCache 的 HashMap本地缓存,其存储作用域为 Session,当 Session flush 或 close 之后,该Session中的所有 Cache 就将清空。 二级缓存与一级缓存其机制相同,默认也是采用 PerpetualCache,Hash...原创 2019-10-31 20:03:11 · 137 阅读 · 0 评论 -
Mybatis学习总结第四课----关联查询(两种关联查询方式)
在关系型数据库中,我们经常要处理一对一 、 一对多的关系 。 例如, 一辆汽车需要有一个引擎,这是一对一的关系。 一辆汽车有 4 个或更多个轮子,这是一对多的关系 。关联元素就是专门用来处理关联关系的。在java类中关联关系也有三种,一对一,一对多,多对多 一对一 在本类中定义对方类型的对象,如A类中定义B类类型的属性b,B类中定义A类类型的属性a 一对多 ...原创 2019-10-31 19:31:54 · 1209 阅读 · 1 评论 -
Mybatis学习总结第三课----使用XML配置SQL映射器详解
关系型数据库和SQL是经受时间考验和验证的数据存储机制。和其他的ORM框架如Hibernate不同,MyBatis鼓励开发者可以直接使用数据库,而不是将其对开发者隐藏,因为这样可以充分发挥数据库服务器所提供的SQL语句的巨大威力。与此同时,MyBaits消除了书写大量冗余代码的痛苦,它让使用SQL更容易。在代码里直接嵌套SQL语句是很差的编码实践,并且维护起来困难。MyBaits使用了映...原创 2019-10-30 17:12:08 · 468 阅读 · 1 评论 -
Mybatis学习总结第二课---MyBati配置文件详解
一、MyBatis配置文件概要MyBatis核心配置文件在初始化时会被引用,在配置文件中定义了一些参数,当然可以完全不需要配置文件,全部通过编码实现,该配置文件主要是是起到解偶的作用。如第一讲中我们用到conf.xml文件<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//...原创 2019-10-25 15:45:36 · 174 阅读 · 0 评论 -
Mybatis源码学习第十一课---插件开发原理
一.插件开发原理插件是用来改变或者扩展mybatis的原有功能,mybatis的插件就是通过继承Interceptor拦截器实现的,在没有完全理解插件之前禁止使用插件对mybatis进行扩展,否则可能会导致严重问题。mybatis中能使用插件进行拦截的接口和方法如下:Executor(update query flushStatement commit rollback getTran...原创 2020-03-19 11:22:07 · 241 阅读 · 0 评论 -
Mybatis源码学习第十课---Mybatis与spring集成源码
目录一 、集成配置二 、SqlSessionFactoryBean源码分析三 SqlSessionTemplate四 、MapperFactoryBean4.1 MapperFactoryBean测试4.2 MapperFactoryBean源码解析2.2.1 这里解决了一个重要问题五、MapperScannerConfigurer六.总结参考一 ...原创 2020-03-18 20:31:57 · 324 阅读 · 0 评论 -
Mybatis源码学习第九课---核心层源码分析--StatementHandler与ResultSetHandler学习
一 、StatementHandlerStatementHandler完成Mybatis最核心的工作,也是Executor实现的基础;功能包括:创建statement对象,为sql语句绑定参数,执行增删改查等SQL语句、将结果映射集进行转化;转存失败重新上传取消...原创 2020-03-16 21:12:25 · 303 阅读 · 0 评论 -
Mybatis源码学习第八课---核心层源码分析--接口层Executor
Executor 是MyBatis的核心接口之一,其中定义了数据库操作的基本方法。在实际应用中经常设计的SqlSession接口的功能,都是基于Executor接口实现的。 SQL 语句的执行涉及多个组件,包括 MyBatis 的四大核心,它们是:Executor、StatementHandler、ParameterHandler、ResultSetHandler。SQL 的执行过...原创 2020-03-01 17:26:24 · 208 阅读 · 0 评论 -
Mybatis源码学习第七课---核心层源码分析--接口层SqlSession
一、简介 SqlSession 是 MyBatis 核心接口之一,也是 MyBatis 接口层的主要组成部分,对外提供 MyBatis 常用 API。MyBatis 提供了两个 SqlSession 接口的实现,下图所示,这里使用了工 厂方法模式,其中开发人员最常用的是 DefaultSq!Session 实现。 SqLSessionFact...原创 2020-02-26 19:22:17 · 162 阅读 · 0 评论 -
Mybatis源码学习第六课---核心层源码分析--binding模块
目录一.一个核心问题二 、binding模块分析 2.1、binging 模块核心组件关系如下图:2.2、MapperRegistry解析2.3、MapperProxyFactory2.4MapperProxy2.5MapperMethod2.5.1SqlCommand2.5.2 ParamNameResolver2.5.3Met...原创 2020-02-08 13:11:18 · 544 阅读 · 0 评论 -
Mybatis源码学习第五课---核心层源码分析--配置加载阶段
一、 mybatis初始化 类似于 Spring、 MyBatis 等灵活性和可扩展性都很高的开源框架都提供了很多配置项,开发人员需要在使用时提供相应的配置信息,实现相应的需求。 MyBatis 中的配置文件主要有两 个,分别是 mybatis-config.xml 配置文件和映射配置文件。 现在主流的配置方式除了使用 XML 配置文件,还会配合注解进行配...原创 2019-12-25 17:43:50 · 227 阅读 · 0 评论 -
Mybatis源码学习第四课---基础支持层反射模块分析
MyBatis 在进行参数处理、结果映射时等操作时,会涉及大量的反射操作。为了简化这些反射相关操作,MyBatis 在 org.apache.ibatis.reflection 包下提供了专门的反射模块,对反射操作做了近一步封装,提供了更为简洁的 API。一、JavaBean规范JavaBean 具有如下特征:所有的属性都是私有的(通过 getter 和 setter 访问) ...原创 2019-12-07 15:55:13 · 431 阅读 · 0 评论 -
Mybatis源码学习第三课---基础支持层缓存模块分析
MyBatis 作为一个强大的持久层框架,缓存是其必不可少的功能之一。 MyBatis 中的缓存是两层结构的,分为一级缓存、二级缓存,但在本质上是相同的,它们使用的都是 Cache 接 口的实现。 缓存模式主要是设计模式是装饰器模式。在 MyBatis 的缓存模块中,使用了装饰器模式的变体,其中将 Decorator 接口和 Component接口合并为一个 Compon...原创 2019-11-25 10:56:25 · 171 阅读 · 0 评论 -
Mybatis源码学习第二课---基础支持层数据源模块分析
下面是数据源模块主要源码, unpooled 代码是不带数据两次池的,pooled是mybatis提供简单的数据连接池。 一、DataSourceFactory 在数据源模块中, DataSourceFactory 接口扮演工厂接口的角色。 UnpooledDataSourceFactory 和 PooledDataSourceFactory 则扮演着具体工...原创 2019-11-13 16:14:02 · 192 阅读 · 0 评论 -
Mybatis源码学习第一课---基础支撑层日志模块分析
MyBatis 源码下载地址:https://github.com/mybatis/mybatis-3一、mybatis整体架构 mybatis 整体架构主要分为三个层次:接口层、核心处理层、基础支撑层。如下图: 二、基础支撑层源码分析 基础支持层位于Mybatis整体架构的最底层,支撑着Mybatis的核心处理层,是整个框架的基石...原创 2019-11-04 19:56:20 · 710 阅读 · 0 评论