mybatis--运行原理

Mybatis的架构
mybatis--运行原理_第1张图片
mybatis运行原理

mybatis底层还是采用原生jdbc来对数据库进行操作的,只是通过 SqlSessionFactorySqlSessionExecutor,StatementHandlerParameterHandler,ResultHandlerTypeHandler等几个处理器封装了这些过程。

mybatis--运行原理_第2张图片

StatementHandler:处理sql语句预编译,设置参数等相关工作;
ParameterHandler:设置预编译参数用的
ResultHandler:处理结果集
TypeHandler:在整个过程中,进行数据库类型和javaBean类型的映射

来看一段创建sqlSessionFactory工厂、打开 sqlsession会话以及执行SQL的代码。

	// 1、获取sqlSessionFactory对象
		String resource = "mybatis-config.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		
	// 2、获取sqlSession对象
		SqlSession openSession = sqlSessionFactory.openSession();
		
    // 3、获取接口的实现类对象
	//会为接口自动的创建一个代理对象,代理对象去执行增删改查方法
		EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
		
	// 4、查询
		Employee employee = mapper.getEmpById(1);

第一步:获取sqlSessionFactory

也就是这一段关键代码:

SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

mybatis--运行原理_第3张图片

第二步:获取sqlSession对象
返回SqlSession的实现类DefaultSqlSession对象。他里面包含了ExecutorConfiguration Executor会在这一步被创建

SqlSession openSession = sqlSessionFactory.openSession();mybatis--运行原理_第4张图片

第三步:获取接口的实现类对象

EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);

mybatis--运行原理_第5张图片

getMapper返回接口的代理对象,包含了SqlSession对象
mybatis--运行原理_第6张图片

第四步:执行查询流程

mybatis--运行原理_第7张图片

你可能感兴趣的:(mybatis)