Mybatis源码

Jingxc大约 2 分钟mybatisjava后端javamybatis后端

Mybatis源码

1. 手写持久层框架思路

1.1 框架使用端(项目)


引入自定义持久层框架jar包

  • 创建SqlMapConfig.xml配置文件:数据库配置信息,(存放mapper.xml的路径地址)
  • 创建mapper.xml配置文件:存放sql信息,参数类型,返回值类型

1.2 框架本身


本质是对JDBC进行封装

  1. 加载配置文件

    • 创建Resources类,负责加载配置文件,加载成字节数入流,存放到内存中
    • 方法:InputStream getResourceAsStream(String path)
  2. 创建两个JavaBean(容器对象)

    • Configuration:全局配置类,存储sqlMapConfig.xml配置文件解析出来的内容
    • MappedStatement:映射配置类:存储mapper.xml配置文件解析出来的内容
  3. 解析配置文件,填充容器对象

    • 创建SqlSessionFactoryBuilder类
      • 方法:SqlSessionFactory
      • build(InputStream)(1)解析配置文件(dom4j+xpath)封装Configuration,(2) 创建SqlSessionFactory
  4. 创建SqlSessionFactory接口及DefaultSqlSessionFactory

    • 方法:SqlSession openSession() 工厂模式
  5. 创建SqlSession接口和DefaultSqlSession实现类

    • 方法:selectList()...
  6. 创建Executor接口和实现类SimpleExecutor

    • 方法:query(Configuration,MappedStatement,Object),执行底层JDBC代码(数据库和sql配置信息)

1.3 手写持久层代码示例


https://gitee.com/jing-xingchun/ipersistentopen in new window

2. Mybatis的架构设计

架构设计
架构设计
  • 接口层:提供增删改查的API接口,通过调用这些接口,可以完成交互
  • 数据处理层:解析SQL,根据调用请求完成一次数据库操作
  • 框架支撑层:负责通用基础服务的支撑
  • 引导层:提供两种配置信息

3. Mybatis的主要组件及其调用关系

MyBatis组件及调用关系
MyBatis组件及调用关系

3.1 MyBatis源码

源码地址:https://github.com/mybatis/mybatis-3open in new window

文档:https://mybatis.org/mybatis-3/zh/index.htmlopen in new window

上次编辑于:
贡献者: Jingxc