03-MyBatis-会话构建过程

MyBatis 会话构建过程

这里先写一个简单的测试案例,通过dubug模式来了解Mybatis的数据查询过程。

1
2
3
4
5
6
7
8
9
10
@Test
public void select() throws IOException {
// 读取mybatis核心配置文件
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
// 创建会话工厂
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession session = sqlSessionFactory.openSession();
User user = session.selectOne("com.mybatis.pojo.User.findStudentById",1);
System.out.println(user);
}

这里可以简单看出MyBatis执行流程非常简单,第一步根据配置文件得到一个会话工厂,后由会话工厂开启会话,然后在会话中执行语句即可。

SqlSessionFactoryBuild类中,除最后一个方法,其余方法的参数都跟配置有关,由此可以推断这些方法都是为了读取配置文件,实例化出XMLConfigBuilder,最终由build(Configuration config)方法来创建真正的SqlSessionFactory
Configuration这个类非常重要,里面的参数都是MyBatis的配置项。

由图可以发现ConfigurationDefaultSqlSessionFactory是一对一的,也就是说从一个DefaultSqlSessionFactory衍生出来的SqlSessionConfiguration是全局唯一的。SqlSessionFactory提供了获取Configuration的方法,所以可以实现修改Configuration来达到动态调整属性的目的,但是一定要注意修改过程中可能会影响到其他SqlSession的执行。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!