一、Mybatis整体架构导图
二、Mybatis的核心组成
SqlSessionFactory(工厂接口):
依靠工厂来生成SqlSession会话接口,生命周期贯穿整个应用,重复创建工厂接口会消耗更多数据库连接资源。
SqlSession(会话接口):
发送SQL去执行并返回结果,还能获取Mapper的接口,生命周期存在于请求数据库处理事务中,结束后要关闭,线程不安全。它里面主要有四大对象:
- Executor 执行器:SIMPLE、REUSER、BATCH
- StatementHandler 数据库会话器:SimpleStatementHandler、PreparedStatementHandler、CallableStatementHandler,通过RoutingStatementHandler的适配器模式穿建不同的StatementHandler对象
- ParameterHandler SQL参数处理器:对预编译的SQL语句进行参数设置,完成预编译参数的设置,从parameterObject对象中取得参数,然后同TypeHandler进行参数处理
- ResultHandler 结果处理器:组装结果集来返回的,里面有处理存储过程输出参数的方法,还有包装结果集的方法,默认情况下用DefaultResultSetHandler类,这个接口的实现有点复杂,涉及到JAVASSIST或者CGLIB作为延迟加载,然后用TypeHandler和ObjectFactory进行结果组装结果再返回
SqlSession内部运行图: