使用IDEA導入MyBatis源碼進行調試
一. 下載源碼
GitHub地址:https://github.com/mybatis/mybatis-3

復制上面的地址執行下列命令:
git clone https://github.com/mybatis/mybatis-3.git mybatis-source
注:GitHub可能會很慢,但是可以借助國內的Gitee進行“下載加速” 參考鏈接
打開mybatis-source下pom.xml文件,會發現Mybatis源碼還依賴于一個父工程:

去Github上下載對應的父工程,下載的mybatis-parent版本要和mybatis源碼中pom文件指定的父工程版本一致。

二. 搭建MyBatis測試環境
注意:這里我們只分析MyBatis源碼,所以并沒有與Spring集成。
第一步:新建Maven,加入MyBatis相應依賴
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.tjd</groupId>
<artifactId>mybatis-source-study</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<junit.version>4.12</junit.version>
<mybatis.version>3.2.8</mybatis.version>
<mysql.version>5.1.32</mysql.version>
<druid.version>1.0.9</druid.version>
</properties>
<dependencies>
<!-- log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- Mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<!-- MySql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!-- 連接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
<!-- Junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<!-- 加載配置文件 -->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
</project>
注意,此時這里引入的MyBatis依賴都是中央倉庫中的,并不是我們下載的源碼。
第二步:新建Mapper接口和對應的映射文件

第三步:新建MyBatis配置文件
在resource目錄下創建SqlSessionConfig.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--開啟日志輸出-->
<settings>
<setting name="logImpl" value="STDOUT_LOGGING" />
</settings>
<!--配置類別名,配置后在Mapper配置文件(通常我們將編寫SQL語句的配置文件成為Mapper配置文件)中需要使用pojo包中的類時,使用簡單類名即可-->
<typeAliases>
<package name="cn.tjd.pojo"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
<property name="url" value="jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8"/>
</dataSource>
</environment>
</environments>
<mappers>
<package name="cn.tjd.mapper"/>
</mappers>
</configuration>
第四步:編寫測試類測試
public class MyBatisTest {
@Test
public void testMyBatisBuild() throws IOException {
InputStream input = Resources.getResourceAsStream("SqlSessionConfig.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(input);
SqlSession sqlSession = sessionFactory.openSession();
TestMapper mapper = sqlSession.getMapper(TestMapper.class);
Map<String, String> student = mapper.getStudentById("00000b373502481baa1a5f5229507cf8");
}
}
測試成功即可進行下一步。

注:之所以要在源碼整合之前搭建好測試環境,是為了保證測試環境的可靠,因為后序的源碼整合可能會發生一些問題,這樣可以排除是因為測試環境錯誤所導致的。
三. 源碼整合
第一步:將源碼項目(兩個)導入當前測試項目所在的界面中
導入后的效果如圖:

至于IDEA如何在一個界面中導入多個項目請參考:一個IDEA界面如何同時打開多個項目
第二步:將源碼安裝至本地倉庫中(參考至:mybatis 源碼導入IDEA)
切換到你下載的mybatis-parent目錄:
mvn clean install -Dmaven.test.skip=true
切換到你下載的mybatis源碼目錄:
mvn clean install -Dmaven.test.skip=true
如果出現如下錯誤:

打開pom.xml 文件注釋掉 maven-pdf-plugin 插件:
<!--
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pdf-plugin</artifactId>
</plugin>
-->
第三步:修改測試項目中pom文件依賴的MyBatis版本
我們需要將測試項目中pom依賴的MyBatis的版本修改為剛剛安裝至本地倉庫的版本:

第四步:運行測試類,看是否能夠執行成功
第一次執行肯定會遇到很多問題,例如博主就遇到了缺少包的問題:

我們在pom文件中加入:
<!-- https://mvnrepository.com/artifact/org.javassist/javassist -->
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.26.0-GA</version>
</dependency>
具體加坐標需要去中央倉庫搜索 。
再次執行,會發現依然缺少依賴,按照相同步驟解決即可。
把所有的問題解決后,我們通過debug可以發現能夠進入到mybatis源碼項目中去,大功告成!


浙公網安備 33010602011771號