经验整理-30-源码篇-Mybatis-100-@

  1. 抓住主线,掌握框架的原理和流程;
  2. 理解了处理思路之后,再去理解面向对象思想和设计模式的用法;

-------------------mybatis-------------
https://blog.csdn.net/kingmax54212008/article/details/104112357
?工作原理或实现原理?

调用流程图

架构图
æ¶æå¾
架构流程图
æ¶ææµç¨å¾

?源码解析总篇?

说明:

1、Mybatis配置文件
SqlMapConfig.xml,作为mybatis的全局配置文件,配置了mybatis的运行环境等信息。
Mapper.xml,作为mybatis的sql映射文件,配置了操作数据库的sql语句。此文件需要在 SqlMapConfig.xml中加载

2、SqlSessionFactory
通过mybatis环境等配置信息构造SqlSessionFactory,即会话工厂

3、SqlSession
通过会话工厂创建sqlSession即会话程序员通过sqlsession会话接口对数据库进行增删改查操作

4、Executor执行器
mybatis底层自定义了Executor执行器接口来具体操作数据库,Executor接口有两个实现,一个是基本执行器(默认)、一个是缓存执行器,sqlsession底层是通过executor接口操作数据库的

5、MappedStatement
它也是mybatis一个底层封装对象,它包装了mybatis配置信息及sql映射信息等。mapper.xml文件中每一个selectinsertupdatedelete标签对应一个Mapped Statement对象,selectinsertupdatedelete标签的id即是Mapped statement的id
Mapped Statement对sql执行输入参数进行定义,包括HashMap、基本类型、pojo,Executor通过MappedStatement在执行sql前将输入的java对象映射至sql中,输入参数映射就是jdbc编程中对preparedStatement设置参数。
Mapped Statement对sql执行输出结果进行定义,包括HashMap、基本类型、pojo,Executor通过MappedStatement在执行sql后将输出结果映射至java对象中,输出结果映射过程相当于jdbc编程中对结果的解析处理过程。

?源码解析子篇--SqlSessionFactoryBuilder(建造者模式)、Mapper接口绑定原理(代理模式 )?

1.SqlSessionFactoryBuilder源码分析 (建造者模式)
//建造者模式:将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式

2. protected T newInstance(MapperProxy<T> mapperProxy) {
    return (T) Proxy.newProxyInstance(mapperInterface.getClassLoader(), new Class[] { mapperInterface }, mapperProxy);
  }   // 通过上述源码分析,我们知道了Mapper接口绑定原理(代理设计模式)

总结:
1.获取本地InputStreamReader对象(获取本地mybatis配置文件)
2.调用SqlSessionFactoryBuilder,再使用XMLConfigBuilder解析mybatis配置文件,装配到Configuration中。
将配置文件中的Mapper添加到Configuration mapperRegistry实现注册。
备注:mapperRegistry存放当前所有的mapper文件。
3.使用configuration获取默认的DefaultSqlSessionFactory




 

发布了39 篇原创文章 · 获赞 0 · 访问量 777

猜你喜欢

转载自blog.csdn.net/qq_15458763/article/details/104230604