Skip to content

Mybatis源码剖析

About 363 wordsAbout 1 min

2025-05-30

需要解决的疑问:

  • 手写持久层框架-仿写mybatis
  • mybatis架构设计、主要组件
  • mybatis如何完成sql解析及执行?
  • mybatis如何设置的参数?
  • mybatis如何进行的类型转换?
  • mybatis如何封装的返回结果集
  • mybatis插件原理是什么?
  • mybatis缓存底层数据结构是什么?

一、手写持久层框架(ipresistent)的思路分析

分为框架使用端和自定义框架本身

1.1、框架使用端

  • 创建SqlMapConfig.xml配置文件:数据库配置信息
  • 创建Mapper.xml配置文件,存放sql信息、参数类型、返回值类型

1.2、自定义框架本身

  • 1、加载配置文件

    创建Resource类,负责加载配置文件,加载成字节数入流,存到内存中

    方法:InputStream getResource(String path);

  • 2、创建两个JavaBean(容器对象)用来存放配置信息

    Configuration:全局配置类,存放sqlMapConfig.xml配置文件解析出来的信息

    MapperStatement:映射配置类,存放mapper.xml配置文件解析出来的信息

  • 3、解析配置文件,填充容器对象

    创建SqlSessionFactoryBuilder类

    方法:SqlSessionFactory build(InputStream)

    解析配置文件(dom4j+xpath),封装Configuration; 创建SqlSessionFactory

  • 4、创建SqlSessionFactory接口及DefaultSqlSessionFactory

    方法:SqlSession openSession() 工厂模式

  • 5、创建SqlSessionFactory接口和DefaultSqlSessionFactory接口的实现类

    方法:selectList(), selelctOne(), update(), delete()

  • 6、创建Exector接口和实现类SimpleExecutor

    方法:query(Configuration, MappedStatement, Object param);

Changelog

6/3/25, 1:49 AM
View All Changelog
  • d3a6d-Merge branch 'dev1'on

求求了,快滚去学习!!!

求求了求求了,快去学习吧!

【题单】贪心算法

不知道方向的时候,可以多看看书,书会给你指明下一步该干什么,加油!