美文网首页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