获取SqlSession对象 SqlSession session = sqlSessionFactory.openSession(); 首先通过SqlSessionFactory的openSession方法获取SqlSession接口的实现类DefaultSqlSession对象. public interface SqlSessionFactory { SqlSession openSession(); SqlSession openSession(boolean autoCommit);…
1 SqlSessionFactory 的核心功能是创建 SqlSession 接口,而 SqlSessionFactory 是通过 SqlSessionFactoryBuilder 去构建. 构建步骤1)XMLConfigBuilder 解析配置的XML文件,读出配置参数,然后将配置数据存放到 Configuration 类中.Mybatis 几乎所有的配置都在 Configuration  类中. 2)使用 Configuration  去创建 SqlSessionFactory ,Myba…
SqlSessionFactoryBuilder 首先创建了一个SqlSessionFactoryBuilder对象,然后调用该对象的build方法加载全局XML配置的流文件构建出一个SqlSessionFactory对象. //指定全局配置文件路径 String resource = "org/mybatis/example/mybatis-config.xml"; //加载配置文件 InputStream inputStream = Resources.getResourceAsS…
上一篇[MyBatis框架原理2:SqlSession运行过程][1]介绍了MyBatis的工作流程,其中涉及到了MyBatis缓存的使用,首先回顾一下工作流程图: 如果开启了二级缓存,数据查询执行过程就是首先从二级缓存中查询,如果未命中则从一级缓存中查询,如果也未命中则从数据库中查询.MyBatis的一级和二级缓存都是基于Cache接口的实现,下面先来看看Cache接口和其各种实现类. Cache接口及常用装饰器 public interface Cache { String getId();…
插件的定义和作用 首先引用MyBatis文档对插件(plugins)的定义: MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用.默认情况下,MyBatis 允许使用插件来拦截的方法调用包括: Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed) ParameterHandler (getParameterObject, setParameters)…
目录 搭建源码环境 POM依赖 测试SQL Mybatis全局配置文件 UserMapper接口 UserMapper配置 User实体 Main方法 快速进入Debug跟踪 源码分析准备 源码分析 第一步: 将全局配置文件XML加载到Configuration对象 第二步 : 解析映射配置文件XML到Configuration的mapperRegistry容器 第三步 : 解析映射文件的Statement为MappedStatement对象 初始化完成 搭建源码环境 在这里我提一下,在早期My…
前言 mybatis是目前进行java开发 dao层较为流行的框架,其较为轻量级的特性,避免了类似hibernate的重量级封装.同时将sql的查询与与实现分离,实现了sql的解耦.学习成本较hibernate也要少很多. 我们可以先简单的回顾下mybatis的使用方式.一般两种方式,单独使用或者配合spring使用.当然了 我们一般都是使用Spring集成的方式 .下面简要写明下两种的关键步骤 单独使用 这儿我们采用手动添加xml配置文件的形式,先加载mybatis配置文件,这儿简要列一下配置…
从 XML 中构建 SqlSessionFactory 基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为中心的.SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得.而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先定制的 Configuration 的实例构建出 SqlSessionFactory 的实例. 从 XML 文件中构建 SqlSessionFactory…
构建SqlSessionFactory 每个mybatis应用都是以SqlSessionFactory的实例为中心的.SqlSessionFactory的实例可以通过SqlSessionFactoryBuilder获得.以下是SqlSessionFactory的源码: 我们可以看到,SqlSessionFactory是一个工厂接口,而不是一个实现类.它的任务就是创建SqlSession.SqlSession类似于一个JDBC的Connection对象. Mybatis提供了两种模式去创建SqlS…
* 本文速览 由于本篇文章篇幅比较大,所以这里拿出一节对本文进行快速概括.本篇文章对 MyBatis 配置文件中常用配置的解析过程进行了较为详细的介绍和分析,包括但不限于settings,typeAliases和typeHandlers等,本文的篇幅也主要在对这三个配置解析过程的分析上.下面,我们来一起看一下本篇文章的目录结构. 从目录上可以看出,2.3节.2.5节和2.8节的内容比较多.其中2.3节是关于settings配置解析过程的分析,除了对常规的 XML 解析过程分析,本节额外的分析了元…