文章目录
1 Mybatis 运行流程图
- MapperProxy: 对 mapper 接口进行实例化的 InvocationHandler 类,当调用 mapper 接口时,会调用 invoke() 方法,进行处理。MapperProxy 通过 method 属性 得到 MapperMethod 实例
- MapperMethod:
- 将 mapper 接口中的方法参数转化为 key,value 形式,以便后续占位符映射
- 将不同类型的 sql(select/update/delete 等)路由到不同的 sqlSessionTemplate 相应的执行方法中(sqlSessionTemplate .select*/update/delete 等)
- SqlSessionTemplate: SqlSessionTemplate 包装了 SqlSessionFactory 和 datasource,通过它可以创建 SqlSession 用于数据库会话
- SqlSessionProxy: 对 sqlSessionTemplate 的拦截,通过 sqlSessionTemplate 得到一个 sqlSession,并且通过它增加了事务管理功能
- SqlSession: 在 SqlSessionProxy 中获取了 sqlSession,其中包含了新建