美文网首页
mybatis中比较核心的两个步骤

mybatis中比较核心的两个步骤

作者: 蔬菜妞 | 来源:发表于2021-01-20 18:27 被阅读0次

    源码分析:

    第一步:读取mybatis-config.xml配置文件

    InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
    
    通过Resources工具类,调用ClassLoader读取classpath下的mybatis-config.xml配置文件,得到一个输入流;
    

    第二步:(有关配置文件的解析与处理都在该步骤中)构建SqlSessionFactory

    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    1、创建一个SqlSessionFactoryBuilder对象:
    new SqlSessionFactoryBuilder();
    
    2、调用SqlSessionFactoryBuilder对象的build方法:
    build(InputStream inputStream)
    
    3、创建XMLConfigBuilder 对象:
    XMLConfigBuilder parser = new XMLConfigBuilder(inputStream, environment, properties);
    
    4、创建XMLMapperEntityResolver对象:
    new XMLMapperEntityResolver()
    
    5、创建XPathParser对象:
    new XPathParser(inputStream, true, props, new XMLMapperEntityResolver())
    
    6、创建XPath对象:
    XPathFactory factory = XPathFactory.newInstance();
    this.xpath = factory.newXPath();
    
    7、创建Document对象:(DOM解析)
    JDK提供的文档解析工厂对象:
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    创建一个DocumentBuilder对象:
    DocumentBuilder builder = factory.newDocumentBuilder();
    解析输入源的xml数据为一个Document文件:
    return builder.parse(inputSource);
    
    8、创建Configuration对象
    new Configuration()
    注册类型别名,初始化Configuration对象的一些成员变量的默认值
    
    9、通过XPath方法解析mybatis-config.xml文件:
    parseConfiguration(parser.evalNode("/configuration"));
    将解析出来的信息封装到Configuration对象中;
    
    10、通过持有Configuration对象创建一个DefaultSqlSessionFactory对象:
    new DefaultSqlSessionFactory(configuration);
    
    总结:
    MyBatis解析配置文件的本质就是为了获得Configuration对象;
    Configuration 对象可以理解是mybatis的XML配置文件在程序中的化身,是MyBatis非常重要的一个对象,里面封装了MyBatis的整个配置信息;
    

    以上内容是mybatis非常核心关键的一个步骤!

    当然,Spring中也有类似的方式,只不过封装的方式与myabtis框架有些区别
    接下来,mybatis要做的就是打开sqlSession、获取Mapper接口对象,这两步比较简单
    最后就是mybatis最核心的内容,调用Mapper接口对象的方法操作数据库,其底层就是jdbc

    相关文章

      网友评论

          本文标题:mybatis中比较核心的两个步骤

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