美文网首页Java相关
Mybatis - 初始化过程

Mybatis - 初始化过程

作者: 万福来 | 来源:发表于2020-04-12 19:34 被阅读0次

mybatis 的配置信息都是存储在 mybatis-config.xml 文件中的。作为配置信息肯定只需要读取一次就够了,问题是读取之后 mybatis 是如何维护的呢?很简单,mybatis 框架直接使用了一个 Configuration 对象来维护所有的配置信息。

Mybatis 初始化过程

一般我们会这么获取 SqlSession。然后通过 SqlSession 获取我们的 mapper 代理对象,执行接口中的方法。

Reader re ader = Resources.getResourceAsReader( "mybatis-config.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession = sessionFactory.openSession(true);
UserDao userDao = sqlSession.getMapper(UserDao.class);
  1. 获取输入流;
  2. 获取 SqlSessionFactory;
  3. 获取 SqlSession;
    mybatis 初始化过程就是获取 SqlSessionFactory 的过程


    image.png

    如上图所示,mybatis 初始化主要经过以下几步:

  • 调用 SqlSessionFactoryBuilder 对象的 build(Reader) 方法;
  • SqlSessionFactoryBuilder 根据输入流 Reader 信息创建 XMLConfigBuilder 对象;
  • SqlSessionFactoryBuilder 调用 XMLConfigBuilder 对象的 parse() 方法;
  • XMLConfigBuilder 对象返回 Configuration 对象;
  • SqlSessionFactoryBuilder 根据 Configuration 对象创建一个 DefaultSessionFactory 对象;
  • SqlSessionFactoryBuilder 返回 DefaultSessionFactory 对象给 Client。
## SqlSessionFactory.java

public SqlSessionFactory build(Reader reader) {
    return build(reader, null, null);
}

public SqlSessionFactory build(Reader reader, String environment, Properties properties) {
    try {
        XMLConfigBuilder parser = new XMLConfigBuilder(reader, environment, properties);
        return build(parser.parse());
    } catch (Exception e) {
        throw ExceptionFactory.wrapException("Error building SqlSession.", e);
    } finally {
        ErrorContext.instance().reset();
        try {
            reader.close();
        } catch (IOException e) {
        // Intentionally ignore. Prefer previous error.
        }
    }
}

public SqlSessionFactory build(Configuration config) {
    return new DefaultSqlSessionFactory(config);
}

相关文章

网友评论

    本文标题:Mybatis - 初始化过程

    本文链接:https://www.haomeiwen.com/subject/qrbbmhtx.html