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

MyBatis核心对象

对象相关对象作用
ConfigurationMapperRegistry、TypeAliasRegistry、TypeHandlerRegistry包含了MyBatis的所有的配置信息
SqlSessionSqlSessionFactory、DefaultSqlSession对操作数据库的增删改查的API进行了封装,提供给应用层使用
ExecutorBaseExecutor、SimpleExecutor、BatchExecutor、ReuseExecutorMyBatis 执行器,是MyBatis调度的核心,负责SQL语句的生成和查询换成的维护
StatementHandlerBaseStatementHandler、SimpleStatementHandler、PreparedStatementHandler、CallableStatementHandler封装了JDBC Statement操作,负责JDBC Statement的操作,如设置参数、将Statement结果集转换成List集合
ParameterHandlerDefaultParameterHandler把用户传递的参数转换成JDBC Statement所需要的参数
ResultSetHandlerDefaultResultSetHandler把JDBC返回的ResultSet结果集对象转换成List类型的集合
MapperProxyMapperProxyFactory触发管理类,用于代理Mapper接口方法
MappedStatementSQLSource 、BoundSqlMappedStatement 维护了一条 <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的事务方法之内。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值