image-20200930153619207.png

  1. 1. 获取sqlSessionFactory对象
  2. 解析文件的每一个信息,保存在Configuration中,返回包含ConfigurationDefaultStatement
  3. 注意:MappedStatement:代表一个增删改查的详细信息。
  4. 2. 获取sqlSession对象
  5. 返回一个DefaultSQLSession对象,包含ExecutorConfiguration
  6. 这一步会创建Executor
  7. 3. 获取接口的代理对象(MapperProxy
  8. getMapper,使用MapperProxyFactory创建一个MapperProxy的代理对象
  9. 代理对象里面包含了,DefaultSqlSessionExecutor
  10. 4. 执行增删改查方法
  11. 总结:
  12. 1. 根据配置文件(全局,sql映射)初始化出Configuration对象
  13. 2. 创建一个DefaultSqlSession对象,
  14. 它里面包含Configuration以及Executor(根据全局配置文件中的defaultExecutorType创建出对应的Executor)
  15. 3. DefaultSqlSession.getMapper(),拿到Mapper接口对应的MapperProxy
  16. 4. MapperProxy里面有(DefaultSqlSession
  17. 5. 执行增伤改查方法:
  18. 1. 调用DefaultSqlSession的增删改查(Executor);
  19. 2. 创建StatementHandler对象。同时也会创建出ParameterHandlerResultSetHandler
  20. 3. 调用StatementHandler的预编译参数以及设置参数值。
  21. 使用ParameterHandler来给sql设置参数
  22. 4. 调用StatementHandler的增删改查方法
  23. 5. ResultSetHandler封装结果
  24. 注意:
  25. 四大对象每个创建的时候都会有一个 interceptorChain.pluginAll(parameterHandler);
  1. 根据配置文件创建SQLSessionFactory

image-20201002145031326.png

  1. 返回SqlSession的实现类DefaultSqlSession对象。他里面包含了ExecutorConfiguration;Executor会在这一步被创建

image-20201002145040107.png

  1. getMapper返回接口的代理对象包含了SqlSession对象

image-20201002145406224.png

  1. 查询流程

image-20201002145425856.png

查询流程总结

image-20201002145530210.png