1. 使用SqlSessionFactory获取SqlSession

2. 通过JDK动态代理获取Mapper接口代理对象

3. 解析mapper.xml保存,通过jdbc,statment,preparestament执行查询等操作

4. 通过反射,构造函数构造对象,通过反射set方法设置对象各个字段

通过JDK动态代理获取mapper接口代理对象

Mybatis源码分析(一)

 

 

 Mybatis源码分析(一)

 

 

 Mybatis源码分析(一)

 

 

 Mybatis源码分析(一)

 

 

 Mybatis源码分析(一)

 

 

 Mybatis源码分析(一)

 

 

 拿到代理对象MapperProxy

Mybatis源码分析(一)

 

 执行MapperMethod

Mybatis源码分析(一)

 

执行查询

Mybatis源码分析(一)

 

 通过sqlsession接口查询

Mybatis源码分析(一)

 

 

Mybatis源码分析(一)

 

 

通过Executor执行查询

Mybatis源码分析(一)

 

 BoundSql保存有sql语句,接着往后走

Mybatis源码分析(一)

Mybatis源码分析(一)

 

 Mybatis源码分析(一)

 

 Mybatis源码分析(一)

 

 这里可以看到JDBC里面的PrepareStatment查询

下面开始解析结果,反射生成对象,反射设置属性

Mybatis源码分析(一)

 

 Mybatis源码分析(一)

 

 Mybatis源码分析(一)

 

 Mybatis源码分析(一)

 

 Mybatis源码分析(一)

 

 Mybatis源码分析(一)

 

 Mybatis源码分析(一)

 

 Mybatis源码分析(一)

 

 Mybatis源码分析(一)

 

 Mybatis源码分析(一)

 

 Mybatis源码分析(一)

 

 可以看到调用java反射创建新的对象。

代码要回到之前的,填充对象的属性

DefaultResultSetHandler.java
getRowValue方法

Mybatis源码分析(一)

 

 Mybatis源码分析(一)

 

 Mybatis源码分析(一)

 

 Mybatis源码分析(一)

 

 Mybatis源码分析(一)

 

 最后也是调了java反射,method.invoke设置对象属性

相关文章:

  • 2022-01-11
  • 2021-12-09
猜你喜欢
  • 2021-05-16
  • 2021-11-20
  • 2022-01-14
  • 2021-05-20
  • 2021-10-08
  • 2021-09-15
相关资源
相似解决方案