美文网首页
MyBatis构建SqlSessionFactory过程

MyBatis构建SqlSessionFactory过程

作者: Doooook | 来源:发表于2020-07-25 09:31 被阅读0次

    SqlSessionFactory是MyBatis的核心类之一,其最重要的功能就是提供创建MyBatis的核心接口SqlSession,所以我们需要先创建SqlSessionFactory,为此我们需要提供配置文件和相关的参数。而MyBatis是一个复杂的系统,采用构造模式去创建SqlSessionFactory,我们可以通过SqlSessionFactoryBuilder去构建。构建分为两步。
    第一步,通过org.apache.ibatis.builder.xml.XMLConfigBuilder解析配置的XML文件,读出配置参数,并将读取的数据存入这个org.apache.ibatis.session.Configuration类中。注意,MyBatis几乎所有的配置都是存在这里的。


    image.png

    最后是通过Configuration来构建DefaultSqlSessionFactory的:


    image.png

    第二步,使用Confinguration对象去创建SqlSessionFactory。MyBatis中的SqlSessionFactory是一个接口,而不是实现类,为此MyBatis提供了一个默认的SqlSessionFactory实现类,我们一般都会使用它org.apache.ibatis.session.defaults.DefaultSqlSessionFactory。注意,在大部分情况下我们都没有必要自己去创建新的SqlSessionFactory的实现类。


    image.png

    随便看一个方法吧,比如propertiesElement,这里的configuration是XMLConfigBuilder继承自BaseBuilder的:


    image.png
    这种创建的方式就是一种Builder模式。对于复杂的对象而言,直接使用构造方法构建是有困难的,这会导致大量的逻辑放在构造方法中,由于对象的复杂性,在构建的时候,我们更希望一步步有秩序的来构建它,从而降低其复杂性。这个时候使用一个参数类总领全局,例如,Configuration类,然后分步构建,例如,DefaultSqlSessionFactory类,就可以构建一个复杂的对象,例如,SqlSessionFactory,这种方式值得我们在工作中学习和使用。

    相关文章

      网友评论

          本文标题:MyBatis构建SqlSessionFactory过程

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