先抛出一个问题,用过Mybatis的都知道,我们只需要定义一个Dao的接口,在里面写上一些CRUD相关操作,然后配置一下sql映射文件,就可以达到调用接口中的方法,然后执行sql语句的效果,为什么呢?我们并没有具体的CRUD操作的实现类啊? 前面说到得到SqlSessionFactory对象,得到SqlSessionFactory是为了得到sqlSession,.SqlSession对象完全包含以数据库为背景的所有执行SQL操作的方法.你可以用SqlSession实例来直接执行已映射的SQL语句…
一.概述: 常见的数据源组件都实现了javax.sql.DataSource接口: MyBatis不但要能集成第三方的数据源组件,自身也提供了数据源的实现: 一般情况下,数据源的初始化过程参数较多,比较复杂: 二.设计模式: 为什么要使用工厂模式 数据源模块类图 : 三.MyBatis源码数据源实现 MyBatis数据源通过工厂模式实现了,非连接池的数据连接,和数据库连接池. 非连接池的数据连接: MyBatis数据库连接池源码解析 数据结构如下: 使用动态代理封装了真正的数据库连接对象,进行了…
Mybatis源码解析(四) -- SqlSession是如何实现数据库操作的?   如果拿一次数据库请求操作做比喻,那么前面3篇文章就是在做请求准备,真正执行操作的是本篇文章要讲述的内容.正如标题一样,本篇文章最最核心的要点就是 SqlSession实现数据库操作的源码解析.但按照惯例,我这边依然列出如下的问题: 1. SqlSession 是如何被创建的? 每次的数据库操作都会创建一个新的SqlSession么?(也许有很多同学会说SqlSession是通过 SqlSessionFactor…
目录 1. 简介 2. 解析 3 StrictMap 3.1 区别HashMap:键必须为String 3.2 区别HashMap:多了成员变量 name 3.3 区别HashMap:key 的处理多了一些变化 3.3.1 put 3.3.2 shortKey 3.3.3 Ambiguity 3.3.4 get 一起学 mybatis @ 相关文章推荐 mybatis 缓存的使用, 看这篇就够了 mybatis源码-解析配置文件(四)之配置文件Mapper解析 1. 简介 本文章主要讲解的是,…
在 mybatis源码-解析配置文件(三)之配置文件Configuration解析 中, 讲解了 Configuration 是如何解析的. 其中, mappers作为configuration节点的一部分配置, 在本文章中, 我们讲解解析mappers节点, 即 xxxMapper.xml 文件的解析. 1 解析入口 在解析 mybatis-config.xml 时, 会进行解析 xxxMapper.xml 的文件. 在图示流程的 XMLConfigBuilder.parse() 函数中, 该…
目录 1. 简介 1.1 系列内容 1.2 适合对象 1.3 本文内容 2. 配置文件 2.1 mysql.properties 2.2 mybatis-config.xml 3. Configuration 类及其解析 3.1 解析入口 3.2 常用函数 3.2.1 获取节点 3.2.2 获取子节点 3.2.3 获取子节点并存到 Properties 对象中 3.3 节点相关成员变量及其解析 3.3.1 properties 属性相关 3.3.2 settings 属性相关 3.3.3 typ…
在Mybatis源码解析,一步一步从浅入深(二):按步骤解析源码中我们看到了XMLConfigBuilder(xml配置解析器)的实例化.而且这个实例化过程在文章:Mybatis源码解析,一步一步从浅入深(三):实例化xml配置解析器(XMLConfigBuilder)也进行了详细的阐述. 那么接下来就是解析configuration.xml并将configuration.xml中的配置信息加载到Configuration实例对象中去. 一,先来看看代码的位置 在文章:Mybatis源码解析,一…
在上一篇文章Mybatis源码解析,一步一步从浅入深(四):将configuration.xml的解析到Configuration对象实例中我们谈到了properties,settings,environments节点的解析,总结一下,针对示例工程的configuration.xml文件来说properties节点的解析就是将dbConfig.properties中的数据库配置信息加载到了configuration实例的variables中,settings节点的解析让configuration…
在文章:Mybatis源码解析,一步一步从浅入深(二):按步骤解析源码中我们提到了两个问题: 1,为什么在以前的代码流程中从来没有addMapper,而这里却有getMapper? 2,UserDao明明是我们定义的一个接口类,根本没有定义实现类,那这个userMapper是什么?是mybatis自动为我们生成的实现类吗? 为了更好的解释着两个问题,我们需要重新认识Configuration这个类. 但是在这之前,你需要了解一个概念(设计模式):JAVA设计模式-动态代理(Proxy)示例及说明…
Mybatis源码解析(三) -- Mapper代理类的生成   在本系列第一篇文章已经讲述过在Mybatis-Spring项目中,是通过 MapperFactoryBean 的 getObject()方法来获取到Mapper的代理类并注入到Spring容器中的.在学习本章之前我们先提出以下几点问题: 1. Mapper接口是如何被加载 到 Configuration 中的? 2. Mapper代理类是如何生成的? 3. Mapper代理类是如何实现接口方法的?    本章内容就是围绕着上面三个…