MyBatis源码解析【3】生命周期】的更多相关文章

MyBatis缓存 我们知道,频繁的数据库操作是非常耗费性能的(主要是因为对于DB而言,数据是持久化在磁盘中的,因此查询操作需要通过IO,IO操作速度相比内存操作速度慢了好几个量级),尤其是对于一些相同的查询语句,完全可以把查询结果存储起来,下次查询同样的内容的时候直接从内存中获取数据即可,这样在某些场景下可以大大提升查询效率. MyBatis的缓存分为两种: 一级缓存,一级缓存是SqlSession级别的缓存,对于相同的查询,会从缓存中返回结果而不是查询数据库 二级缓存,二级缓存是Mapper…
Mybatis源码解析(一) -- mybatis与Spring是如何整合的?   从大学开始接触mybatis到现在差不多快3年了吧,最近寻思着使用3年了,我却还不清楚其内部实现细节,比如: 它是如何加载各种mybatis相关的xml? 它是如何仅仅通过一个Mapper接口 + Mappe.xml实现数据库操作的(尽管很多人可能都清楚是通过代理实现,但面试时一旦深入询问:比如Mapper的代理类名是什么?是通过JDK还是cglib实现?)? 在同一个方法中,Mybatis多次请求数据库,是否要…
Mybatis源码解析(四) -- SqlSession是如何实现数据库操作的?   如果拿一次数据库请求操作做比喻,那么前面3篇文章就是在做请求准备,真正执行操作的是本篇文章要讲述的内容.正如标题一样,本篇文章最最核心的要点就是 SqlSession实现数据库操作的源码解析.但按照惯例,我这边依然列出如下的问题: 1. SqlSession 是如何被创建的? 每次的数据库操作都会创建一个新的SqlSession么?(也许有很多同学会说SqlSession是通过 SqlSessionFactor…
XMLLanguageDriver是ibatis的默认解析sql节点帮助类,其中的方法其会调用生成DynamicSqlSource和RawSqlSource这两个帮助类,本文将对此作下简单的简析 应用场景 我们在编写mybatis的sql语句的时候,经常用到的是#{}的字符去替代其中的查询入参,偶尔也会在网上看到${}这样的字符使用.其实前者调用的为RawSqlSource帮助类进行生成具体的sql,而后者则是通过DynamicSqlSource帮助类来实现的. 选用逻辑 我们还是回到ibati…
目录 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…
Spring SpringMVC Mybatis(简称ssm)是一个很流行的java web框架,而Mybatis作为ORM 持久层框架,因其灵活简单,深受青睐.而且现在的招聘职位中都要求应试者熟悉Mybatis框架.我认为有必要分析一下Mybatis的源码.在进行源码分析前,先准备一个简单的工程.如果你还不会使用maven请参考:Maven 创建项目之简单示例,创建一个简单的工程. 开发工具:eclipse jdk版本:1.8 1,创建好的工程目录如下图所示: 2,现在来添加工程的依赖包,配置…
在文章:Mybatis源码解析,一步一步从浅入深(一):创建准备工程,中我们为了解析mybatis源码创建了一个mybatis的简单工程(源码已上传github,链接在文章末尾),并实现了一个查询功能.接下来就顺着查询功能的实现开始一步一步开始解析mybatis源码. 首先们观察我们的测试代码类UserDaoTest: package com.test.learnmybatis; import org.apache.ibatis.io.Resources; import org.apache.i…
在上一篇文章:Mybatis源码解析,一步一步从浅入深(二):按步骤解析源码 ,中我们看到 代码:XMLConfigBuilder parser = new XMLConfigBuilder(reader, environment, properties); 使用读取的configuration.xml字符输入流作为参数,使用XMLConfigBuilder类的三个参数的构造器实例化一个xml配置解析器(XMLConfigBuilder),并且 environment, properties的值…