【Mybatis】Mybatis源码阅读的准备工作

368 阅读1分钟

这是我参与8月更文挑战的第3天,活动详情查看:8月更文挑战

下载

Github搜索mybatis,便可找到项目

$ git clone https://github.com/mybatis/mybatis-3.git

构建

由于mybatis是纯Java编写的maven项目,因此无需手动编译,只需要将项目使用IDEA打开,IDEA会自动帮我们进行构建。 构建完成后的项目目录如下:

image.png

image.png

由于当前的下载的代码是master分支的代码,是最新的版本。如果需要调试其他版本的代码,可以使用一下步骤进行切换。

  • 查看tag
$ git tag
mybatis-3.0.1
mybatis-3.0.2
mybatis-3.0.3
mybatis-3.0.4
......
mybatis-3.5.4
mybatis-3.5.5
mybatis-3.5.6
mybatis-3.5.7

  • 拉取某个tag到本地
# 拉取3.4.1版本到本地的local_mybatis分支
$ git branch local_mybatis mybatis-3.4.1

# 查看本地分支
$ git branch
  local_mybatis
* master

# 切换到local_mybatis分支
$ git checkout local_mybatis

调试

mybatis调试可以直接在源码项目中调试,也可以在已有的项目中引入源码打的jar包。

方式一、已有项目,引入jar包

  • 首先将源码进行打包
$ mvn clean package -Dmaven.test.skip=true
  • 进入已有项目的项目结构中(可以点击按钮,也可以使用快捷键)

image.png

  • 到Libraries菜单下,点击减号,把旧的Mybatis依赖移除

image.png

  • 点击加号(选择java),添加第一步打好的jar包(target目录下),最后需要选择一下应用的模块(按需选择)

image.png

image.png

方式二、在源码工程中调试

  1. Mybatis有足够多的测试用例供你调试。当然,也可以自己写。
  2. 与数据库初始化相关的测试类BaseDataTest,与数据库相关的文件在org.apache.ibatis.databases包下,Mapper接口与POJO对象在org.apache.ibatis.domain包下,与Mapper对应的XML文件以及相关的配置文件在org.apache.ibatis.builder包下。
  3. Mybatis中内嵌了derby数据库,因此不需要你做其他配置,就可以直接进行建表(blog-derby-schema.sql),加数据(blog-derby-dataload.sql),然后测试。

image.png

  1. 新建自己的Test类如下(基于3.5.8版本),如此便可正常运行了。
public class MyTest extends BaseDataTest {

    private static SqlSessionFactory sqlSessionFactory;

    @BeforeAll
    static void setup() throws Exception {
        createBlogDataSource();
        final String resource = "org/apache/ibatis/builder/MapperConfig.xml";
        final Reader reader = Resources.getResourceAsReader(resource);
        sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
    }

    @Test
    public void test() {
        try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
            BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);
            System.out.println(mapper.selectAllPosts());
        }

    }
}

准备工作完成了,接下来就可以细品Mybatis源码了:)