获取SqlSession对象 SqlSession session = sqlSessionFactory.openSession(); 首先通过SqlSessionFactory的openSession方法获取SqlSession接口的实现类DefaultSqlSession对象. public interface SqlSessionFactory { SqlSession openSession(); SqlSession openSession(boolean autoCommit);…
前言 SqlSession是Mybatis最重要的构建之一,可以简单的认为Mybatis一系列的配置目的是生成类似 JDBC生成的Connection对象的SqlSession对象,这样才能与数据库开启“沟通”,通过SqlSession可以实现增删改查(当然现在更加推荐是使用Mapper接口形式),那么它是如何执行实现的,这就是本篇博文所介绍的东西,其中会涉及到简单的源码讲解. 了解SqlSession的运作原理是学习Mybatis插件的必经之路,因为Mybatis的插件会在SqlSession…
插件的定义和作用 首先引用MyBatis文档对插件(plugins)的定义: MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用.默认情况下,MyBatis 允许使用插件来拦截的方法调用包括: Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed) ParameterHandler (getParameterObject, setParameters)…
上一篇[MyBatis框架原理2:SqlSession运行过程][1]介绍了MyBatis的工作流程,其中涉及到了MyBatis缓存的使用,首先回顾一下工作流程图: 如果开启了二级缓存,数据查询执行过程就是首先从二级缓存中查询,如果未命中则从一级缓存中查询,如果也未命中则从数据库中查询.MyBatis的一级和二级缓存都是基于Cache接口的实现,下面先来看看Cache接口和其各种实现类. Cache接口及常用装饰器 public interface Cache { String getId();…
第七章MyBatis的解析和运行原理 SqlSessionFactory是MyBatis的核心类之一,其最重要的功能就是提供创建MyBatis的核心借口SqlSession,所以要先创建SqlSessionFactory,为此要提供配置文件和相关的参数.MyBatis是一个复杂的系统,它采用了Builder模式去创建SqlSessionFactory,在实际上可以通过SqlSessionFactoryBuilder去创建,分为两步: SqlSessionFactory = new SqlSess…
MyBatis的运行分为两大部分,第一部分是读取配置文件缓存到Configuration对象,用以创建SqlSessionFactory,第二部分是SqlSession的执行过程. 6.1 涉及的技术难点简介 Mapper是一个接口,而接口是没有办法去执行的,那么它是怎么运行的呢?答案是动态代理,MyBaits会为Mapper产生代理类,为此先来学习下动态代理.一般而言,动态代理分为两种,一种是JDK反射机制提供的代理,另一种是CGLIB代理. 6.1.1 反射技术 6.1.2 JDK动态代理…
Mybatis的运行过程分为两大步: 第1步,读取配置文件缓存到Configuration对象,用于创建SqlSessionFactory: 第2步,SqlSession的执行过程.相对而言,SqlSessionFactory的创建还算比较容易理解,而SqlSession的执行过程就不那么简单了,它包括许多复杂的技术,要先掌握反射技术和动态代理,这里主要用到的是JDK动态代理. 一个简单使用的例子 public class TestMybatis { public static void mai…
Mybatis的解析和运行原理 Mybatis的运行过程大致分为两大步:第一步,读取配置文件缓存到Configuration对象,用以创建 SqlSessionFactory:第二步,SqlSession的执行过程.其中第一步中, SqlSessionFactory的创建过程比较简单,第二步中, SqlSession的执行过程较为复杂,其底层需要用到反射技术和动态代理的知识. 1. 构建 SqlSessionFactory过程  SqlSessionFactory是Mybatis的核心类之一,其…
前言 这个分类比较连续,如果这里看不懂,或者第一次看,请回顾之前的博客 http://www.cnblogs.com/linkstar/category/1027239.html 经过之前的学习我们知道了工厂是如何建立的,是如何生产产品的. 那么今天要进入重点中的重点了.那就是我们究竟是如何使用这个产品的. 也就是SqlSeesion究竟是如何运行的,内部究竟有些什么东西. 这部分很难,需要使用到我们之前的基础装备哦. 产品运行的大致步骤 我们还是老规矩从外部来看看是如何运行的. SqlSess…
文章介绍结构一览 一.使用maven创建web项目 1.新建maven项目 2.修改jre版本 3.修改Project Facts,生成WebContent文件夾 4.将WebContent下的两个文件复制到src/main/webapp下,删掉WebContent 5.修改Deployment Assembly 6.测试 二.mybatis访问mysql 1.数据库准备 2.修改pom.xml 3.创建实体类 4.创建访问接口 5.添加映射文件 6.添加MyBatisCfg.xml配置文件,注…