Mybatis源码分析系列(一):Mybatis 架构

233 阅读2分钟

前言

工作有三年之久,每次都想沉淀一些东西,因为拖延症严重,每每就放弃了。这次给自己定下目标,先将这一系列文章写完,后续还会有自己手动撸一个Mybatis框架来证实自己的源码阅读效果。

Mybatis 是什么?

Mybatis 官网原文

MyBatis is a first class persistence framework with support for custom SQL, stored procedures and advanced mappings。

翻译过来就是Mybatis是一个类持久化框架,可以支持自定义SQL,存储过程和高级映射等功能。

其实就像大家用到的一样,写一个interface,然后映射到mapper文件,然后就可以查询数据库了,这写都是Mybatis框架替我们做的。

Mybatis 架构

mybatis的架构图(图片来源于网上):

Mybatis-架构图.png

架构还是特别清晰的,主要包含三个层次。

接口层:用来定义crud接口供框架使用

核心层:框架的主要处理逻辑,分为4部分

解析配置文件 -> 参数处理 -> 执行sql -> 结果映射

基础层:包含一些通用组件,日志,缓存,数据源等等

Mybatis Helloword

我们先来看看Mybatis最简单的使用:

String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory =
  new SqlSessionFactoryBuilder().build(inputStream);
try (SqlSession session = sqlSessionFactory.openSession()) {
  Blog blog = session.selectOne(
    "org.mybatis.example.BlogMapper.selectBlog", 101);
}

使用起来只需要3步。

  1. 编写mybatis配置文件mybatis-config.xml
  2. 获取SqlSession
  3. 获取对应MapperInterface进行查询

后面系列文章就会详细讲讲

  1. mybatis是如何读取配置文件
  2. 如何构造sqlSession
  3. 如何获取MapperInterface
  4. 如何查询Sql
  5. 如何设置参数
  6. 如何返回结果的
  7. ...

这些问题伴随着我们的开发过程,会十分有用,希望小伙伴们能跟着文章一起深入研究下去。

总结

  1. mybatis是一个持久化框架
  2. mybatis的架构预览,mybatis总体包含三层,接口层,核心层,基础层
  3. mybatis helloword预览,明白在实际code过程中是如何使用的,以及带出可能会有疑问的问题,一起深入这个系列的文章

相信看完终究会有些收获,我是程序员阿松,生命不息,代码不止。