Mybatis源码
1. 手写持久层框架思路
1.1 框架使用端(项目)
引入自定义持久层框架jar包
- 创建SqlMapConfig.xml配置文件:数据库配置信息,(存放mapper.xml的路径地址)
- 创建mapper.xml配置文件:存放sql信息,参数类型,返回值类型
1.2 框架本身
本质是对JDBC进行封装
-
加载配置文件
- 创建Resources类,负责加载配置文件,加载成字节数入流,存放到内存中
- 方法:InputStream getResourceAsStream(String path)
-
创建两个JavaBean(容器对象)
- Configuration:全局配置类,存储sqlMapConfig.xml配置文件解析出来的内容
- MappedStatement:映射配置类:存储mapper.xml配置文件解析出来的内容
-
解析配置文件,填充容器对象
- 创建SqlSessionFactoryBuilder类
- 方法:SqlSessionFactory
- build(InputStream)(1)解析配置文件(dom4j+xpath)封装Configuration,(2) 创建SqlSessionFactory
- 创建SqlSessionFactoryBuilder类
-
创建SqlSessionFactory接口及DefaultSqlSessionFactory
- 方法:SqlSession openSession() 工厂模式
-
创建SqlSession接口和DefaultSqlSession实现类
- 方法:selectList()...
-
创建Executor接口和实现类SimpleExecutor
- 方法:query(Configuration,MappedStatement,Object),执行底层JDBC代码(数据库和sql配置信息)
大约 2 分钟