在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的配置信息;可想而知,很重要;

Mybatis SqlsessionFactory的更多相关文章

  1. MyBatis SqlSessionFactory的几种常见创建方式

    原文链接:https://blog.csdn.net/jimolangge123/article/details/49228255 MyBatis框架主要是围绕着SqlSessionFactory这个 ...

  2. MyBatis - SqlSessionFactory 与 SqlSession

    SqlSessionFactory SqlSessionFactory是创建SqlSession的工厂,一般使用单例模式,不需要重复创建. SqlSession SqlSession是直接与数据库直接 ...

  3. MyBatis_ibatis和mybatis的区别【转】

    1. ibatis3.*版本以后正式改名为mybaits,它也从apache转到了google code下:也就是说ibatis2.*,mybatis3.*. 2. 映射文件的不同 ibatis的配置 ...

  4. eclipse + maven 搭建springMVC+Spring+mybatis 系统

    首先需要下载maven 安装maven插件.自行百度. 1: 创建maven系统 http://huxiaoheihei.iteye.com/blog/1766986 2:添加pom依赖: pom.x ...

  5. myBatis应用

    最近项目中使用myBatis(iBatis),所以目前对所遇的一些问题及有些模糊的地方在这里标注一下. 首先mybaits是一个“半自动化”的ORM框架. 需要使用的jar包:mybatis-3.0. ...

  6. MyBatis入门学习

    所需要jar包:mybatis-3.x.x.jar .如果需要和spring整合,还需要加入相关的包 1:看项目目录 红颜色不要关心 2:按照步骤: 1:加入jar包 2:创建数据源(configur ...

  7. MyBatis good

    命名解析:为了减少输入量,MyBatis 对所有的命名配置元素(包括语句,结果映射,缓存等)使用了如下的命名解析规则. 完全限定名(比如“com.mypackage.MyMapper.selectAl ...

  8. MyBatis学习门户网站(一)

    需要jar包:mybatis-3.x.x.jar .假设需要和spring综合,此外,我们需要增加相关的包 1:看到项目文件夹 不要在意红色 2:依照步骤: 1:增加jar包 2:创建数据源(conf ...

  9. 从JDBC到hibernate再到mybatis之路

    一.传统的JDBC编程 在java开发中,以前都是通过JDBC(Java Data Base Connectivity)与数据库打交道的,至少在ORM(Object Relational Mappin ...

随机推荐

  1. netmap配置

    1.配置流程 环境:centos 7.2.1511,内核版本3.10.0-327.el7.x86_64 [1]下载内核源码,https://buildlogs.cdn.centos.org/c7.15 ...

  2. oracle入坑日记<三>用户详解(角色理解)

    1   用户是什么 1.1.权限管理是Oracle的精华,不同用户登录到同一数据库中,可能看到不同数量的表,拥有不同的权限.Oracle 的权限分为系统权限和数据对象权限,共一百多种.如果把Oracl ...

  3. 关于Hibernate和Strtus2的xml提示问题

    话不多说,上图 1.Windom 2.preferences 3.搜索框搜索xml catalog 点击Add 4.导入约束(具体操作图上1.2.3)

  4. hml页面转化成图片

    <!DOCTYPE html><html><head><meta charset="utf-8"><meta name=&qu ...

  5. 深入理解Java虚拟机读书笔记2----垃圾收集器与内存分配策略

    二 垃圾收集器与内存分配策略 1 JVM中哪些内存需要回收?     JVM垃圾回收主要关注的是Java堆和方法区这两个区域:而程序计数器.虚拟机栈.本地方法栈这3个区域随线程而生,随线程而灭,随着方 ...

  6. rest_famework 增删改查初第四阶段(最高级,此阶段是优化第三阶段的代码)的使用

    两个url 共用一个视图 url url(r'^books/$', views.BookViewSet.as_view({"get":"list"," ...

  7. mongodb插入数据获取本次插入的mongodb id

    最近接了一个别人的项目做二次开发,使用php进行mongodb的数据操作时,需要插入数据后得到相应的mongodb 中的id,简单代码如下 $data = array('test' => 'aa ...

  8. Java环境变量PATH和CLASSPATH

    Java开发中常用到环境变量的配置,下面简单介绍下Java中经常配置的环境变量:PATH和CLASSPATH. 1.PATH环境变量 1.1 作用简介 安装完JDK(Java Development ...

  9. 关于python的正则表达式的例子

  10. Excel VBA ——如何导出数据到excel表格

    sub OutPut() Dim FileTitle, MyPath, MyFullName As String Application.ScreenUpdating = false '关闭表格公式的 ...