SqlSession运行总结
SqlSession的运行原理十分重要,它是插件的基础,这里我们对一次查询或者更新进行总结以加深对MyBatis内部运行的掌握。SqlSession内部运行图,如图所示。
SqlSession是通过Executor 创建StatementHandler 来运行的,而StatementHandler要经过下面三步。
- prepared预编译SQL。
- parameterize设置参数。
- query/update执行SQL。
其中 parameterize是调用parameterHandler的方法去设置的,而参数是根据类型处理器typeHandler去处理的。query/update方法是通过resultHandler进行处理结果的封装,如果是update的语句,它就返回整数,否则它就通过typeHandler处理结果类型,然后用ObjectFactory提供的规则组装对象,返回给调用者。这便是SqISession执行的过程,我们清楚了四大对象是如何协作的,同时也更好地理解了typeHandler和 ObjectFactory在MyBatis 中的应用。