Mybatis笔记

Mybatis数据处理流程

avatar

1.创建配置并调用api
核心配置文件configuration.xml和mapper.xml配置完成后,调用mybatis框架中的数据库操作接口
2.加载配置并初始化
Mybatis框架会根据mapper跟configuration的内容,使用资源辅助类resourcers把配置文件读成输入流,通过解析器解析并封装到Configuration对象和mappedstatement对象中,最终存储到内存中。
3.创建会话并接受请求
SqlSessionFactoryBuilder会创建工厂SqlSessionFactory,sqlSessionFactory会根据应用程序端请求,创建SqlSession
4.处理请求
SqlSession将会话转发给Executor,执行器再分派到语句处理器StatementHandler,处理器结合参数处理器,对数据库进行操作(封装了JDBC statement)
5.StatementHandler处理完数据库操作后,会协同ResultSetHandler以及TypeHandler,对数据库返回结果进行映射封装返回对象。

avatar

Resource类

构建配置对象时,将XML文件信息加载成流,这就是Resources类的作用。

//加载核心配置文件
InputStream resourceAsStream = Resources.getResourceAsStream("Config.xml");

avatar

会话工厂创建器SqlSessionFactoryBuilder

解析文件流并构建sqlSessionFactory
// 获得sqlSession工厂对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);

builder是通过XMLConfigBuilder解析文件流,封装成配置对象Configuration,再使用该对象构建factory实例/
public SqlSessionFactory build(
InputStream inputStream,
String environment,
Properties properties) {
// 配置解析器解析
XMLConfigBuilder parser =
new XMLConfigBuilder(
inputStream,environment, properties);

	// 最终实例会话工厂
	return build(parser.parse());
}

SqlSessionFactory 一经实例,SqlSessionFactoryBuilder 使命完成,便可消亡,便可被丢弃。

SqlSessionFactory会话工厂

  • 默认实现DefaultSqlSessionFactory
  • SqlSessionManager **(仅多实现了一个 Sqlsession 接口,已弃用)

会话工厂可以简单创建 SqlSession 实例:

// 创建 SqlSession 实例
SqlSession session = sqlSessionFactory.openSession();

默认的DefaultSqlSessionFactory创建session时都会调用openSessionFromDataSource方法

		// 每一个 openSession 最终都会调用此处
		private SqlSession openSessionFromDataSource(ExecutorType execType, TransactionIsolationLevel level,  boolean autoCommit) {
   
		// 环境配置
		final Environment environment = configuration.getEnvironment();
		// 事务工厂
		final TransactionFactory transactionFactory = getTransactionFactoryFromEnvi
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值