MyBatis的解析和运行原理

       MyBatis的运行分为两部分,第一部分是读取配置文件缓存到Configuration对象,用以创建SqlSessionFactory,第二部分是SqlSession的执行过程(反射技术和动态代理技术)。

      在DAO层的Mapper仅仅是一个接口,而不是一个包含逻辑的实现类。接口是无法实例化并且执行的,所以这就用到了动态代理结束,通过DEBUG的过程来查看Mapper的具体细节。

MyBatis的解析和运行原理

       反射调用的最大好处是配置型大大提高,就如同Spring IOC容器一样,我们可以给很多配置参数,使得Java应用程序能够顺利运行起来,大大提高了Java的灵活性和可配置性,降低模块之间的耦合。

       动态代理的方法主要有JDK动态代理(此种代理方式基于接口的代理,被代理类必须实现了接口);CGLIB动态代理(此种代理方式可以解决被代理类没有实现接口)。


构建SqlSessionFactory过程

第一步:通过org.apache.ibatisbuilder.xml.XMLConfigBuilder解析配置的XML文件,独处配置参数,并将读取的数据存入这个org.apache.ibatisbuilder.session.Configuration类中。

第二步:使用Configuration对象去创建SqlSessionFactory。


SqlSession运行过程