码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • mybatis源码编译教程


    在这里插入图片描述

    使用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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

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

    下载mybatis-parent源码

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

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

    编译mybatis-parent源码

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

    mvn clean install
    
    • 1

    编译mybatis源码

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

    mvn clean 
    
    mvn install -Dmaven.test.skip=true
    
    • 1
    • 2
    • 3

    如果出现如下错误:
    在这里插入图片描述
    打开pom.xml 文件注释掉 maven-pdf-plugin 插件

    <!--
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-pdf-plugin</artifactId>
          </plugin>
    -->
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    然后重新编译

    补充点我在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;

  • 相关阅读:
    如何判断身边的朋友是否嫉妒你?
    使用线程池的10个坑
    华为OD机试 - 求最多可以派出多少支团队 - 双指针(Java 2023 B卷 100分)
    ES6之数组解构
    pytest文档82 - 用例收集钩子 pytest_collect_file 的使用
    会计要素包括哪些内容
    Linux·内核-硬中断
    【Java】Spring boot快速上手(三)前后端分离实现小程序登录(接口篇)
    九、Vue3基础之九
    Vuex->vuex获取值以及改变值,vuex异步请求
  • 原文地址:https://blog.csdn.net/yixuan_love/article/details/126438260
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号