InputStream inputStream = Resources.getResourceAsStream("mybatis.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = factory.openSession();
第1步:通过Resources
加载全局配置文件成全局配置文件流。
第2步:实例化SqlSessionFactoryBuilder
构建器,帮助SqlSessionFactory
接口实现DefaultSqlSessionFactory
类。
实现过程:创建XmlConfigBuilder
解析全局配置文件流, 并把解析结果存放在Configuration
中,之后把Configuratin
传递给DefaultSqlSessionFactory
。到此SqlSessionFactory
工厂创建成功.
第3步:由SqlSessionFactory工厂创建SqlSession。
每次创建SqlSession
时,都需要由TransactionFactory
创建Transaction
对象, 同时还需要创建SqlSession
的执行器Excutor
, 最后实例化DefaultSqlSession
传递给SqlSession
接口.
第4步: 根据业务需求,使用SqlSession
接口中的API
完成具体的事务操作。如果事务执行失败,需要进行rollback
回滚事务。如果事务执行成功commit
给数据库,关闭SqlSession
。
到此就是MyBatis 的运行原理.(面试官说的.)