文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、有兴趣的可以关注一手。

前提

研究源码、对我们的技术提高还是很有帮助的。简单的源码建议从mybatis入手。涉及到的设计模式不是很多。需要下载mybatis的源码父工程依赖。注意下载的mybatis中的父工程依赖版本要对应。这里下载较稳定的版本。mybatis-3.5.3。对应的父版本是31。

mybatis-3.5.3下载地址:github地址mybatis-parent下载地址:github下载地址

如果访问github比较慢、评论区置顶我给出了下载好的项目源码地址链接。

搭建环境

1、首先创建一个Maven项目

具体创建过程略

mybatis源码研究、搭建mybatis源码运行的环境_sql

2、导入源码

打开项目结构、或者按快捷键:Ctrl + Alt + Shift + S

选择Modules --》 点击 + 号 --》选择 import Module --》 选择下载的源码

mybatis源码研究、搭建mybatis源码运行的环境_java_02

将下载的源码导入

mybatis源码研究、搭建mybatis源码运行的环境_sql_03

选择后,弹出一个对话框、选择 Maven 后点击 finish

mybatis源码研究、搭建mybatis源码运行的环境_java_04

将下载的两个源码都导入

mybatis源码研究、搭建mybatis源码运行的环境_sql_05

将两个源码导入后的项目结构

mybatis源码研究、搭建mybatis源码运行的环境_mybatis_06

3、在创建的Maven项目中,添加代码

自己创建一个数据库、编写几个查询语句、没啥好说的。这里简略

mybatis源码研究、搭建mybatis源码运行的环境_apache_07

4、Debug运行研究源码

然后就可以通过Debug方式查看代码执行情况了

测试类

package com.zyz;

import com.zyz.mapper.userMapper;
import com.zyz.entity.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.util.List;

/**
 * @author zyz
 * @version 1.0
 * @data 2023/7/28 12:48
 * @Description:
 */
public class AppTest {


    @Test
    public void test() throws IOException {
        InputStream input = Resources.getResourceAsStream("SqlSessionConfig.xml");
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(input);
        SqlSession sqlSession = sessionFactory.openSession();
        userMapper dao = sqlSession.getMapper(userMapper.class);
        System.out.println(dao);
        List<User> userList = dao.selectAllUser();
        for (User level : userList) {
            System.out.println(level);
        }
    }

    @Test
    public void testMyBatisBuild() throws IOException {
        Reader reader = Resources.getResourceAsReader("SqlSessionConfig.xml");
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
        SqlSession sqlSession = factory.openSession();
        userMapper mapper = sqlSession.getMapper(userMapper.class);
        User one = mapper.getOne(1);
        System.out.println(one);
        sqlSession.close();
    }

}

5、项目启动效果

mybatis源码研究、搭建mybatis源码运行的环境_mybatis_08


mybatis源码研究、搭建mybatis源码运行的环境_java_09

可能遇到的问题

出现的问题、一般都是由于依赖导致。下载对应的依赖就可以了。

mybatis源码研究、搭建mybatis源码运行的环境_sql_10

在自己创建的maven工程下的pom中添加如下依赖

<dependency>
            <groupId>org.javassist</groupId>
            <artifactId>javassist</artifactId>
            <version>3.24.1-GA</version>
        </dependency>

是不是xml文件没有编译、如果是,就在自己的pom文件中添加下方代码。

mybatis源码研究、搭建mybatis源码运行的环境_java_11


mybatis源码研究、搭建mybatis源码运行的环境_java_12


添加

<build>
        <!-- 加载配置文件 -->
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
    </build>

后语

如果你嫌弃麻烦、不想自己搭建这个环境。我这里将搭建好的环境已经打包好,地址链接在评论区置顶。你直接拿来运行、研究代码就可以了。个人建议还是搭建一下环境比较好。也能学到蛮多。