![](https://img-blog.csdnimg.cn/20190918140012416.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Mybatis源码
文章平均质量分 95
MyBatis源码源码非常优秀,其中用到了各种设计模式。阅读它的源码,可以让我们实际应用中学习设计模式,也能让我们了解ORM框架的设计过程。
每天都要进步一点点
工作日常技术学习、积累、总结
展开
-
MyBatis源码阅读(十二) --- Spring加载MyBatis过程
目录一、概述二、Spring加载MyBatis过程三、Mapper接口的获取四、总结一、概述通过前面几篇文章的学习,相信小伙伴对Mybatis的认识更加深刻了,对整体的流程应该算是比较清晰了。但是我们在项目中很少单独使用Mybatis,一般都是集成到Spring中,由Spring来帮我们完成以前很多繁琐的步骤,比如管理SqlSessionFactory、创建SqlSession,并且不需要手动调用getMapper方法去获取mapper接口,直接使用autoWired自动注入进来就好原创 2021-04-17 09:16:59 · 871 阅读 · 0 评论 -
MyBatis源码阅读(十一) --- MyBatis事务管理机制
目录一、概述二、Mybatis事务管理机制三、总结一、概述事务的概念,大家都不会陌生。在我们写增删改的时候,我们肯定都需要加上事务,来保证数据的一致性。MyBatis作为Java语言的数据库框架,对数据库的事务管理是其非常重要的一个方面。在Mybatis中,同样提供了事务的功能,所以我们有必要了解一下MyBatis的事务管理的实现机制。二、Mybatis事务管理机制Mybatis也提供了事务的机制,MyBatis将事务抽象成了Transaction接口。Transaction接口原创 2021-04-17 09:05:34 · 383 阅读 · 0 评论 -
MyBatis源码阅读(十) --- 一级缓存、二级缓存工作原理
目录一、概述二、一级缓存的使用三、一级缓存的关闭四、一级缓存的工作原理五、二级缓存的使用六、二级缓存的工作原理七、总结一、概述缓存,相信大家应该不陌生,在工作中,我们也接触过一些缓存中间件,比如Redis等。缓存的作用就是为了提供查询的效率,减少访问数据库的次数,从而提供性能。同样的,Mybatis里面也提供了缓存功能,包括一级缓存和二级缓存。本篇文章我们将总结Mybatis的一级缓存、二级缓存怎么用的以及分析它们的作用域、实现原理等。MyBatis中的缓存相关类都在原创 2021-04-15 11:33:31 · 466 阅读 · 0 评论 -
MyBatis源码阅读(九) --- 插件原理
一、概述插件功能也是Mybatis框架中的一个核心功能,Mybatis提供了自定义插件功能来帮我们扩展个性化业务需求。本篇文章我们将总结Mybatis的插件机制以及如何自定义一个插件。我们在做查询操作的时候,如果数据量很大,不可能一次性返回所有数据,一般会采用分页查询的方式,那么在Mybatis的分页是如何做的呢?其实,要实现分页,就可以使用到Mybatis的插件功能,我们可以拦截到Mybatis将要执行的SQL语句,然后动态修改其中的参数,比如加入limit限制条数等。MyBatis的插件是通过动原创 2021-04-14 21:08:54 · 339 阅读 · 0 评论 -
MyBatis源码阅读(八) --- Executor执行器
目录一、概述二、Executor执行器的创建过程三、SimpleExecutor四、ReuseExecutor五、BatchExecutor六、CachingExecutor七、总结一、概述Executor 是一个接口,包含更新,查询,事务等一系列方法。在前面分析SqlSession创建过程的时候,我们知道每个SqlSession对象都会有一个Executor对象,SqlSession的操作都会交由Executor执行器执行。我们先看看Executor类的继承图:原创 2021-04-14 20:54:10 · 653 阅读 · 0 评论 -
MyBatis源码阅读(七) --- 查询结果集封装流程
一、概述前面一篇文章我们分析了mapper方法具体的执行流程,跟踪代码到了resultSetHandler.handleResultSets()处理结果集这里,这也是Mybatis处理数据的最后一个步骤了。试想一下,如果让我们自己组装结果,我们该如何实现呢,可以大概想一下。如果是我们自己实现的话,有几个关键的步骤:1、准备一个List集合存放结果集; 2、肯定要拿到我们在Mapper.xml中配置的resultType属性,拿到之后,通过反射,我们应该可以拿到对应的Class类; 3、拿原创 2021-04-13 13:49:43 · 702 阅读 · 0 评论 -
MyBatis源码阅读(六) ---mapper方法具体执行流程分析
目录一、概述二、mapper方法具体执行流程三、mapper方法执行流程图四、总结一、概述前面我们介绍了mapper接口是如何获取的,那么接下来就是具体的调用Mapper方法执行SQL:User user = userMapper.getById(1L);话不多说,直接来看下具体的执行流程。二、mapper方法具体执行流程熟悉JDK动态代理的小伙伴应该都知道,代理类需要实现InvocationHandler接口,并重写里面的invoke方法。public cl原创 2021-04-12 17:33:13 · 1092 阅读 · 0 评论 -
MyBatis源码阅读(五) ---Mapper接口的获取过程
目录一、简介二、Mapper接口的获取过程三、Mapper接口的获取流程图四、总结一、简介前面一篇文章我们总结了SqlSession的创建过程,既然会话已经创建成功,那么下一步自然就是去获取到Mapper接口执行具体的SQL,当然也可以直接使用SqlSession执行具体的SQL。本篇文章主要分析一下Mapper接口的获取过程。二、Mapper接口的获取过程//获取Mapper接口UserMapper userMapper = sqlSession.getMapper(U原创 2021-04-11 15:18:45 · 784 阅读 · 0 评论 -
MyBatis源码阅读(四) --- SqlSession的创建过程
目录一、概述二、SqlSession的创建过程三、 SqlSession的创建过程流程图四、总结一、概述前面一篇文章我们详细分析了SqlSessionFactory的创建过程,既然SqlSessionFactory有了,那么我们就可以通过sqlSessionFactory.openSession()来开启一个会话了,进而实现对数据库的操作,那么sqlSessionFactory.openSession()到底干了哪些事情呢?本篇文章就来详细看下。SqlSession是Mybati原创 2021-04-10 20:03:15 · 1131 阅读 · 0 评论 -
MyBatis源码阅读(三) --- 配置信息的解析以及SqlSessionFactory构建过程
目录一、简介二、配置信息解析过程三、Mapper接口解析过程四、Mapper接口与MapperProxyFactory的绑定过程五、SqlSessionFactory创建流程图六、总结一、简介前面一篇文章我们对Mybatis整体的执行流程做了一个详细的总结:https://blog.csdn.net/Weixiaohuai/article/details/115529683本篇文章我们将分析一下配置信息是如何解析的以及SqlSessionFactory创建过程。二、配原创 2021-04-10 19:56:10 · 689 阅读 · 0 评论 -
MyBatis源码阅读(二) --- 执行流程分析
目录一、概述二、Mybatis核心类三、MyBatis执行流程四、执行流程图五、总结一、概述前面一篇文章我们已经搭建好了Mybatis的源码调试环境,那么今天我们先来看看MyBatis整体的执行流程是怎样的,先对整体有个了解,后面我们再针对各个细节进行分析。在分析执行流程之前,我们先对Mybatis中几个核心类做个简单的介绍。二、Mybatis核心类Mybatis核心类主要有下面几个:SqlSessionFactory每个基于 MyBatis 的应用都是以一个 Sq原创 2021-04-08 20:04:27 · 733 阅读 · 7 评论 -
MyBatis源码阅读(一) --- 源码阅读环境搭建
目录一、简介二、源码环境搭建一、简介使用Mybatis有一段时间了,但是一直没有专门去阅读MyBatis框架的源码,Mybatis是一个非常值得我们去阅读的框架,源码里面运用了很多常见的设计模式,如构建者模式、代理模式、模板方法模式等等,都值得我们去学习和借鉴。下面我们就以搭建一个源码阅读环境开始,一起来看看Mybatis的源码。MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集原创 2021-04-08 17:52:19 · 612 阅读 · 0 评论