Mybatis源代码分析

问题: 要是我  如何实现 一个Mybatis?

  基础 是 JDBC  还是 SpringJDBC?

SpringJDBC无非是 在JDBC的基础上封装了事务 (通过模板模式)

 

 

实现要点:

SQL从配置文件加载到内存 ,这里判断  是否需要事务处理

 

/**
* Proxy needed to route MyBatis method calls to the proper SqlSession got
* from Spring's Transaction Manager
* It also unwraps exceptions thrown by {@code Method#invoke(Object, Object...)} to
* pass a {@code PersistenceException} to the {@code PersistenceExceptionTranslator}.
*/

Mybatis源代码分析_第1张图片

 

核心 好像 还是反射:

 

Mybatis源代码分析_第2张图片 

ClassPathXmlApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");
    SqlSession sqlsession=(SqlSession) ctx.getBean("sqlSession");
    sqlsession.selectList("select * from databasesum");

 

1执行selectList 他会通过 sqlSession的代理 去执行 selectList

2SQLSessionTemplate 的拦截器(这里有拦截器?)通过反射的方式 去执行 方法

3去获取sqlsession

4真正处理的问题的是DefaultSQLSESSIonfactory

你可能感兴趣的:(Mybatis源代码分析)