使用IDEA通过github地址直接导入mybatis 源码

下载mybatis源码

下载地址:https://github.com/mybatis/mybatis-3

以我下载的 mybatis-3-mybatis-3.4.6 为例,下载完后解压。打开pom.xml

<parent><groupId>org.mybatis</groupId><artifactId>mybatis-parent</artifactId><version>30</version><relativePath />
</parent>

发现mybatis源码依赖 mybatis-parent 所以编译前要先下载mybatis-parent

下载mybatis-parent源码

下载地址:https://github.com/mybatis/parent

下载的 mybatis-parent 版本要和mybatis源文件pom.xml 版本一致。

编译mybatis-parent源码

切换到你下载的mybatis-parent目录:

mvn clean install

编译mybatis源码

切换到你下载的mybatis源码目录:

mvn clean mvn install -Dmaven.test.skip=true

如果出现如下错误:

打开pom.xml 文件注释掉 maven-pdf-plugin 插件

<!--<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-pdf-plugin</artifactId></plugin>
-->

然后重新编译

补充点我在mybatis源码中看到用的设计模式

Builder模式:例如SqlSessionFactoryBuilder、XMLConfigBuilder、XMLMapperBuilder、XMLStatementBuilder、CacheBuilder;

工厂模式:例如SqlSessionFactory、ObjectFactory、MapperProxyFactory;

单例模式:例如ErrorContext和LogFactory;

代理模式:Mybatis实现的核心,比如MapperProxy、ConnectionLogger,用的jdk的动态代理,还有executor.loader包使用了cglib或者javassist达到延迟加载的效果;

组合模式:例如SqlNode和各个子类ChooseSqlNode等;

模板方法模式:例如BaseExecutor和SimpleExecutor,还有BaseTypeHandler和所有的子类例如IntegerTypeHandler;

适配器模式:例如Log的Mybatis接口和它对jdbc、log4j等各种日志框架的适配实现;装饰者模式:例如Cache包中的cache.decorators子包中等各个装饰者的实现;

迭代器模式:例如迭代器模式PropertyTokenizer;

mybatis源码编译教程相关推荐

  1. tx2+opencv源码编译教程(tx2+opencv4.4.0+opencv_contrib-4.4.0)

    tx2+opencv源码编译教程(tx2+opencv4.4.0+opencv_contrib-4.4.0) 一.卸载TX2上已安装的opencv 打开终端,输入以下指令卸载已经安装的opencv: ...

  2. tensorflow源码编译教程_源码编译安装tensorflow 1.8

    参考官方指南 基本要求 官网测试过的源代码配置如下: image 也就是说,按照这个版本安装的话不应该再产生版本的问题了. 我的配置 ubuntu 16 python 2.7 nccl 2.3 gcc ...

  3. SQLite源码编译教程

    SQLite源码编译安装 SQLite简介 编译安装 源码下载 编译过程 demo实例 总结 SQLite简介 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页.如果你想学习如何使用M ...

  4. mybatis源码编译出现问题

    1 mybatis-3 下载GitHub源码后  pom文件 <parent><groupId>org.mybatis</groupId><artifactI ...

  5. 最好用的Redis Desktop Manager 0.9.3 版本下载 以及源码编译教程

    文章目录 一.前言 二.编译教程 2.1 [redis destop manager 的源码地址](https://github.com/uglide/RedisDesktopManager) 2.2 ...

  6. Spring 6 源码编译教程分享~

    前言:Spring Boot 3 RELEASE版本于 2022年11月24日 正式发布,此次Spring Boot里程碑的升级也要求了最低JDK 17 和 Spring Framework 6 ,其 ...

  7. 可视化工具VisIt源码编译教程(Windows,图文讲解)

    我新建了一个VisIt软件的交流qq群:1169585995,欢迎大家加入一起交流,一起学习! 所用软件及其版本 用于源码编译的软件及版本如下: Windows版本:win10 VisIt版本:vis ...

  8. orangepi升级linux内核,orangePi源码编译教程

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? #环境 ubuntu 12.04.5 64位 8G内存 jdk-6u45-linux-x64.bin 64位JDK6 板 ...

  9. 怎么查看MySQL 源码编译了什么_Mysql 源码编译教程贴

    题外话:这是一篇教程贴,不仅学的是mysql的编译,还是一些编译的知识.我也是一个菜鸟,写一些感悟和心得,有什么问题可以批评指正,谢谢! 如果只是为了安装请移到我的另一篇安装贴: Mysql安装贴 环 ...

  10. MeshLab 2022.02 源码编译教程

    目录 前言 编译准备 编译配置 1. 源码下载 2. 路径配置 3. 命令行编译 4. 报错解决 结语 前言 MeshLab是三维立体网格处理软件,为自由软件,首先发布于2005年年底.此软件可显示及 ...

最新文章

  1. 自定义checkbox,redio等
  2. android汽车之家顶部滑动菜单,Android自定义控件之仿汽车之家下拉刷新
  3. cvs svnmanager
  4. .NET简谈组件程序设计之(上下文与同步域)
  5. Android 设计的几处硬伤
  6. 基于SOC方案的嵌入式开发-远程定时设备
  7. 查找算法——插值查找
  8. BeijingPeople
  9. Kconfig中select与depends on原理
  10. IE7访问HTTPS网站提示证书有安全问题的解决方案
  11. 数独终局生成及残局求解
  12. Arduino and the SPI bus
  13. 新手java练习题100(1-5)
  14. 单片机原理与应用实验——串口(C语言),使用串口发送或接收数据,定时器1作为波特率发生器
  15. 状态模式(State)-七十二变
  16. 【python--爬虫】b站弹幕爬虫
  17. 7个可用手机写博客的地方
  18. iPhone界面各种控件的大小
  19. Linux、Mac时间戳转换小工具
  20. 反编译apk获得源代码

热门文章

  1. linux 虚拟示波器,模拟示波器怎么看频率,模拟示波器频率计算
  2. PPAPI nacl_sdk安装
  3. 【DP专题】LintCode刷题笔记
  4. LintCode #4. 丑数 II
  5. 购票系统c语言座位分配,铁路购票系统的简单座位分配算法
  6. 基于PHP+MySQL共享自行车租赁管理系统的设计与实现
  7. USB 协议分析(含基本协议和 USB 请求和设备枚举)
  8. 软件测试相关英文单词整理
  9. 解决xShell4某些情况下按删除键会输出^H的问题
  10. python更新包列表出错_python – 完整更新pip包时出错