MybatisMybatis

Mybatis 源码(一)总揽

2019-10-22  本文已影响0人  xiaolyuh

整体架构

Mybatis 整体架构

这只是MySql的一个逻辑划分架构。

代码结构

Mybatis 代码结构.png

Mybatis的代码结构非常工整,堪称完美的java编程规范教科书,当我们深入源码我们会发现,Mybatis的注释量相当少,那是因为基本上我们可以通过名称就能明白其中的含义。

Mybatis中的设计模式

如果想学习设计模式在代码中的应用,阅读Mybatis源码也是一个不错的选择,如:

Mybatis 快速入门

public class MybatisTest extends BaseTest {

    private SqlSessionFactory sqlSessionFactory;

    @Before
    public void init() throws IOException {
        String resource = "config/mybatis-config.xml";
        try (InputStream inputStream = Resources.getResourceAsStream(resource)) {
            // 1.读取mybatis配置文件创SqlSessionFactory
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        }
    }

    @Test
    // 测试自动映射以及下划线自动转化驼峰
    public void quickStart() throws Exception {
        // 2.获取sqlSession
        try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
            initH2dbMybatis(sqlSession);

            // 3.获取对应mapper
            PersonMapper mapper = sqlSession.getMapper(PersonMapper.class);
            // 4.执行查询语句并返回结果
            Person person = mapper.selectByPrimaryKey(1L);
            System.out.println(person.toString());
        }
    }
}

Mybatis执行流程

Mybatis 执行流程.png
  1. new SqlSessionFactoryBuilder().build(inputStream);:读取mybatis配置文件构建SqlSessionFactory
  2. sqlSessionFactory.openSession();:获取sqlSession资源
  3. sqlSession.getMapper(PersonMapper.class);:获取对应mapper
  4. mapper.selectByPrimaryKey(1L);:执行查询语句并返回结果
  5. 关闭资源

上图是Mybatis的执行流程,由此我们可以看出Mybatis的核心类有4个,分别是SqlSessionFactoryBuilderSqlSessionFactorySqlSessionSQL Mapper

Mybatis核心流程三大阶段

从上面的执行流程可以看出,Mybatis核心流程主要分为以下三个阶段:

示例源码

https://github.com/wyh-spring-ecosystem-student/spring-boot-student/tree/releases

spring-boot-student-mybatis工程

Mybatis 源码中文注释

https://github.com/xiaolyuh/mybatis

上一篇 下一篇

猜你喜欢

热点阅读