# mybatis源码学习 **Repository Path**: zhong96/mybatis-start ## Basic Information - **Project Name**: mybatis源码学习 - **Description**: mybatis源码学习 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 10 - **Forks**: 9 - **Created**: 2020-07-13 - **Last Updated**: 2023-09-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ![mybatis](http://mybatis.github.io/images/mybatis-logo.png) > MyBatis SQL mapper框架使面向对象应用程序更容易地使用关系数据库。 > MyBatis使用XML描述符或注释将对象与存储过程或SQL语句连接起来。 > 简单性是MyBatis数据映射器相对于对象关系映射工具的最大优势。 ## MyBatis简介 ​ MyBatis源于Apache的一个开源项目iBatis。2002年,Clinton Begin开发了iBatis框架,并引入了SQL映射作为持久化层开发的一种方法,不久后Clinton Begin将iBatis捐献给Apache软件基金会。2010年,这个项目由Apache迁移到了Google Code,并改名为MyBatis。2013年11月,MyBatis迁移到目前最大的源代码托管平台Github。 ​ MyBatis是一款在持久层使用的SQL映射框架,可以将SQL语句单独写在XML配置文件中,或者使用带有注解的Mapper映射类来完成数据库记录到Java实体的映射。与另一款主流的ORM框架Hibernate不同,MyBatis属于半自动的ORM框架,它虽然不能将不同数据库的影响隔离开,仍然需要自己编写SQL语句,但是可以灵活地控制SQL语句的构造,将SQL语句的编写和程序的运行分离开,使用更加便捷。 ​ 目前,Java实现的持久化框架比较多,名气相对较大的有Hibernate、Speedment、Spring Data JPA、ActiveJPA等。总结一下,MyBatis能够流行起来的主要原因有以下几点: - (1)消除了大量的JDBC冗余代码,包括参数设置、结果集封装等。 - (2)SQL语句可控制,方便查询优化,使用更加灵活。 - (3)学习成本比较低,对于新用户能够快速学习使用。 - (4)提供了与主流IoC框架Spring的集成支持。 - (5)引入缓存机制,提供了与第三方缓存类库的集成支持。 > [https://github.com/mybatis/mybatis-3](https://github.com/mybatis/mybatis-3) > [https://github.com/mybatis/parent](https://github.com/mybatis/parent)(依赖) > ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200714105950978.png) ## 一 、下载mybatis源码 可以通过Release找到最新版本,直接下载源码Source Code到本地。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200714102349425.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhbnF1YW56aG9uZw==,size_16,color_FFFFFF,t_70) MyBatis工程有一个依赖包mybatis-parent,也需要下载到本地! 可以直接idea导入 也可以直接下载为zip包(推荐这种)。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200714104910920.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhbnF1YW56aG9uZw==,size_16,color_FFFFFF,t_70) 通过查看mybatis的pom.xml文件,发现是一个聚合项目,依赖mybatis-parent ```xml org.mybatis mybatis-parent 31 ``` ## 二 、下载mybatis-parent源码 Mybatis源码依赖parent工程,版本:mybatis-parent-31.zip, ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200714105316563.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhbnF1YW56aG9uZw==,size_16,color_FFFFFF,t_70) 需要先编译parent工程再编译mybatis,具体如下 - 先进入到parent项目目录下执行命令: ```bash mvn clean install -Dmaven.test.skip ``` - 再进入到mybatis-3项目目录下执行命令: ```bash mvn clean install -Dmaven.test.skip ``` 或者 选择mybatis-parent模块,install ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200714151742235.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhbnF1YW56aG9uZw==,size_16,color_FFFFFF,t_70) 然后选择mybatis模块,install。注意pom文件中,修改parent为相对路径 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200714204343354.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhbnF1YW56aG9uZw==,size_16,color_FFFFFF,t_70) 构建完成!下面便可以写代码,通过debug看源码了! ## 三、阅读MyBatis源码 添加自己包结构,`com.gqzdev.mybati......` ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200714212538641.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhbnF1YW56aG9uZw==,size_16,color_FFFFFF,t_70) 通过上面的测试,证明我们搭的环境没问题,接下来便是一步步调试,阅读源码的过程 ## 四、整合Spring-Mybatis模块 下载官方提供的案例,[https://github.com/mybatis/spring](https://github.com/mybatis/spring) ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200714212019582.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhbnF1YW56aG9uZw==,size_16,color_FFFFFF,t_70)