引言在mybatis的基础知识中我们已经对mybatis的工作方式斑见豹(参考: 《MyBatis————基础知识》 )。
在本作品的博客中,将阐述Mybatis的内部动作原理。
另一方面,Mybatis工作原理图Mybatis原理图如下。
二、工作原理分析http://www.Sina.com/Java文件配置方式也可以,@ configuration 3358 www.Sina.com /
mybatis应用程序通过SqlSessionFactoryBuilder从mybatis-config.xml配置文件(
描述: SqlSession是一个单线程对象。 因为是非线程安全的,并且是持久性操作的独占对象,所以与jdbc的Connection一样,底层封装了jdbc连接。
)来构建SqlSessionFactory(SqlSessionFactory是线程安全的);
1、加载mybatis全局配置文件(数据源、mapper映射文件等),对配置文件进行解析,mybatis基于XML配置文件生成Configuration,并生成一个个mapped station
2、SqlSessionFactoryBuilder用于通过配置对象生成SqlSessionFactory以打开SqlSession。
3、SqlSession对象完成与数据库的交互:
a、用户程序调用mybatis接口层api (即Mapper接口中的方法) ) ) ) ) )。
b、SqlSession通过调用api的语句id找到对应的映射语句对象
c、通过执行程序(负责动态SQL的生成和查询缓存的维护)解析映射语句对象,转换SQL参数,将动态SQL拼接在一起,将JDBC语句对象
d、JDBC执行sql。
e、利用映射语句的结果映射关系,将返回的结果转换为HashMap、JavaBean等存储结构并返回。
然后,SqlSessionFactory的实例直接开启一个SqlSession,再通过SqlSession实例获得Mapper对象并运行Mapper映射的SQL语句,完成对数据库的CRUD和事务提交,之后关闭SqlSession。
图: https://blog.csdn.net/xudan 1010/article/details/53435018
见文章:
《Mybatis实现原理深入解析》
《Mybatis之工作原理》
《mybatis加载顺序》