zoukankan      html  css  js  c++  java
  • Mybatis SqlsessionFactory

    在Mybatis 与 Spring 进行整合的时候,我们会进行sqlSessionFactory 的配置,来创建sqlSessionFactory 对象:如下;

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="configLocation"><value>classpath:mybatis/mybatis-config.xml</value></property>
            <!-- 自动扫描mapper.xml文件 -->
            <property name="mapperLocations" value="classpath:mybatis/mapper/**/*.xml"></property>
         <property name="dataSource" ref="mysqlDs" />
    </bean>

    我们点进去 SqlSessionFactoryBean 内部

    类继承关系:果然这三个集成接口全部都是Spring 的扩展接口;
    public class SqlSessionFactoryBean implements FactoryBean<SqlSessionFactory>, InitializingBean, ApplicationListener<ApplicationEvent> 
    根据XML的配置,我们可以看到(知识点:对于定义的 Resource属性,Spring 会自动将我们XML 配置的资源文件转换为Resource 对象,就可以对文件进行操作了,很方便 )
      private Resource configLocation;
     private Resource[] mapperLocations;
      private DataSource dataSource;

    因为 SqlSessionFactoryBean 实现了 InitializingBean的接口,我们先看 afterPropertiesSet() 方法:

     public void afterPropertiesSet() throws Exception {
        notNull(dataSource, "Property 'dataSource' is required");
        notNull(sqlSessionFactoryBuilder, "Property 'sqlSessionFactoryBuilder' is required");
      //初始化sqlSessionFactory
        this.sqlSessionFactory = buildSqlSessionFactory();
      }

    可以看到 buildSqlSessionFactory() 方法进行了sqlSessionFactory 的初始化操作;

    buildSqlSessionFactory()内容比较多,从全局出发大致就是这四件事情:

    1. 在整个sqlSessionFactory 维护着一个Configuration 的配置信息,这个配置信息包括了数据库的配置,以及我们定义mybatis-config.xml   我们自定义的mapper.xml 解析后的配置信息,几乎是所有的mapper配置信息都可以在这个类中找到,是mybatis 开发中重要组件,没有此类,几乎所有的方法不能运行;

    2.
    xmlConfigBuilder.parse(); 解析 mybatis-config.xml ,把一些我们在 mybatis-config.xml 定义的一些配置 plugins, typeAliases,mappers等很多配置的信息,存放到 Configuration 组件中;
    3. xmlMapperBuilder.parse(); 这个是用来解析我们的自定义的mapper.xml 的方法,作用也一样,就是将配置sql ,namespace ,方法加载到 Configuration 组件中,会将sql片段进行保存(XML 解析的方式主要就是jaxp 的dom 解析以及xpath 解析);

    4. return this.sqlSessionFactoryBuilder.build(configuration); 创建 sqlSessionFactory 对象,-> 返回

      return new DefaultSqlSessionFactory(config); 默认的 DefaultSqlSessionFactory

    可以看到很多的操作都是在维护 Configuration的配置信息;可想而知,很重要;

  • 相关阅读:
    Delphi中TFlowPanel实现滚动条效果
    Delphi组件开发-在窗体标题栏添加按钮(使用MakeObjectInstance(NewWndProc),并处理好多消息)
    减小Delphi的Exe文件大小(11种方法)
    画出太极图
    类似地图的以鼠标为中心缩放图像
    andoid x项目的优化 1
    ICON图标文件解析
    所有语言的Awesome(2)
    获取EIP(汇编语言直接给Delphi变量赋值)
    Qt Windows下链接子系统与入口函数(终结版)(可同时存在main和WinMain函数)
  • 原文地址:https://www.cnblogs.com/iscys/p/10051513.html
Copyright © 2011-2022 走看看