Mybatis源码学习之—— 核心对象

MyBatis核心对象

对象 相关对象 作用 Configuration MapperRegistry、TypeAliasRegistry、TypeHandlerRegistry 包含了MyBatis的所有的配置信息 SqlSession SqlSessionFactory、DefaultSqlSession 对操作数据库的增删改查的API进行了封装,提供给应用层使用 Executor BaseExecutor、SimpleExecutor、BatchExecutor、ReuseExecutor MyBatis 执行器,是MyBatis调度的核心,负责SQL语句的生成和查询换成的维护 StatementHandler BaseStatementHandler、SimpleStatementHandler、PreparedStatementHandler、CallableStatementHandler 封装了JDBC Statement操作,负责JDBC Statement的操作,如设置参数、将Statement结果集转换成List集合 ParameterHandler DefaultParameterHandler 把用户传递的参数转换成JDBC Statement所需要的参数 ResultSetHandler DefaultResultSetHandler 把JDBC返回的ResultSet结果集对象转换成List类型的集合 MapperProxy MapperProxyFactory 触发管理类,用于代理Mapper接口方法 MappedStatement SQLSource 、BoundSql MappedStatement 维护了一条 <select|update|delete|insert> 节点的封装,表示一条SQL包含了SQL信息、入参信息、出参信息

4个核心对象的生命周期 以下表格说明了MyBatis四个核心对象的生命周期。

对象 生命周期 说明 SqlSessionFactoryBuilder 方法局部(method) 它是用来构建SqlSessionFactory的,因为SqlSessionFactory只需要一个,当构建了SqlSessionFactory之后,它的使命就完成了。 SqlSessionFactory 应用级别(application) 它是用来创建SqlSession的,每次应用访问数据库,都需要创建一个会话,因为一直有创建会话的需要,所以SqlSessionFactory要存在于整个应用的生命周期中。创建SqlSession只需要一个实例就够了,所以SqlSessionFactory是单例的。 SqlSession 请求和操作(request / method) SqlSession是线程不安全的,不能在线程间共享。我们总请求开始时创建一个SqlSession会话对象,在请求结束或方法执行完毕的时候,要及时进行关闭。 Mapper 方法(method) 它实际上是一个代理对象,是从SqlSession中获得的。UserMapper mapper = sqlSession.getMapper(UserMapper.class) 它通过发送SQL来操作数据库的数据。它应该在一个SqlSession的事务方法之内。
经验分享 程序员 微信小程序 职场和发展