这是我参与8月更文挑战的第3天,活动详情查看:8月更文挑战
下载
Github搜索mybatis,便可找到项目
$ git clone https://github.com/mybatis/mybatis-3.git
构建
由于mybatis是纯Java编写的maven项目,因此无需手动编译,只需要将项目使用IDEA打开,IDEA会自动帮我们进行构建。 构建完成后的项目目录如下:
由于当前的下载的代码是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
- 进入已有项目的项目结构中(可以点击按钮,也可以使用快捷键)
- 到Libraries菜单下,点击减号,把旧的Mybatis依赖移除
- 点击加号(选择java),添加第一步打好的jar包(target目录下),最后需要选择一下应用的模块(按需选择)
方式二、在源码工程中调试
- Mybatis有足够多的测试用例供你调试。当然,也可以自己写。
- 与数据库初始化相关的测试类
BaseDataTest
,与数据库相关的文件在org.apache.ibatis.databases
包下,Mapper接口与POJO对象在org.apache.ibatis.domain
包下,与Mapper对应的XML文件以及相关的配置文件在org.apache.ibatis.builder
包下。 - Mybatis中内嵌了derby数据库,因此不需要你做其他配置,就可以直接进行建表(blog-derby-schema.sql),加数据(blog-derby-dataload.sql),然后测试。
- 新建自己的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源码了:)