当前位置: 首页 > news >正文

MyBatis源码系列3(解析配置文件,创建SqlSessionFactory对象)

创建SqlSessionFactory; 首先读取配置文件,使用构造者模式创建SqlSessionFactory对象。

  InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
  SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

创建SqlSessionFactory 时序图。
在这里插入图片描述核心:解析xml配置文件,解析的配置文件用Configuration对象保存。

解析配置文件核心步骤:

//从根节点解析
parseConfiguration(parser.evalNode("/configuration"));
private void parseConfiguration(XNode root) {
    try {
      //issue #117 read properties first
      propertiesElement(root.evalNode("properties"));
      //设置
      Properties settings = settingsAsProperties(root.evalNode("settings"));
      loadCustomVfs(settings);
      //自定义别名
      typeAliasesElement(root.evalNode("typeAliases"));
      //拦截器
      pluginElement(root.evalNode("plugins"));
      objectFactoryElement(root.evalNode("objectFactory"));
      objectWrapperFactoryElement(root.evalNode("objectWrapperFactory"));
      reflectorFactoryElement(root.evalNode("reflectorFactory"));
      settingsElement(settings);
      // read it after objectFactory and objectWrapperFactory issue #631
      environmentsElement(root.evalNode("environments"));
      databaseIdProviderElement(root.evalNode("databaseIdProvider"));
      //自定义数据类型转换器
      typeHandlerElement(root.evalNode("typeHandlers"));
      //解析mapper  重要
      mapperElement(root.evalNode("mappers"));

    } catch (Exception e) {
      throw new BuilderException("Error parsing SQL Mapper Configuration. Cause: " + e, e);
    }
  }

解析顺序与配置文件中的设置信息完全一致。
在这里插入图片描述
Configuration对象几个主要的属性:
在这里插入图片描述

相关文章:

  • FPGA开发——UART回环实现之发送模块的设计和数据回环整体实现
  • 革新测试管理:集远程、协同、自动化于一身的统一测试管理平台
  • ubuntu20.04 安装docker
  • [C#]基于winform结合photocartoon算法实现人物卡通化源码实现
  • 安全基础学习-RC4加密算法
  • 加密狗创新解决方案助力工业自动化
  • 计算机网络
  • 八股总结----计算机网络
  • Git工具练习网站
  • 冷热数据拆分
  • C++11中的Lambda表达式
  • 记录git push时的报错以及解决方案
  • 七大排序算法
  • OD C卷 - 贪吃的猴子
  • 快速把文件名统计到excel表的方法
  • Javaweb学习之HTML(二)
  • 最新的APS高级计划排程系统推动的MRP供应链计划是什么?
  • multiprocessing,threading与subprocess区别
  • 单独编译bootloader部分
  • C++类和对象(2)
  • 习近平致电祝贺默茨当选德国联邦总理
  • 山东如意集团及实控人等被出具警示函,此前实控人已被罚十年禁止入市
  • 特朗普:对所有在国外制作进入美国的电影征收100%关税
  • 今天全国铁路、公路进入返程高峰,这些路段时段通行压力大
  • 看着不爽就滚蛋!郑州大学第一附属医院一科室公众号被曝运营人员辱骂他人
  • 2025年五一档电影票房破4亿,《水饺皇后》领跑