
[专栏]MyBatis原理分析
文章平均质量分 96
pfnie
这个作者很懒,什么都没留下…
展开
-
《深入理解mybatis原理(一)》 Mybatis初始化机制详解
对于任何框架而言,在使用前都要进行一系列的初始化,MyBatis也不例外。本章将通过以下几点详细介绍MyBatis的初始化过程。 1.MyBatis的初始化做了什么 2. MyBatis基于XML配置文件创建Configuration对象的过程 3. 手动加载XML配置文件创建Configuration对象完成初始化,创建并使用SqlSessionFactory对转载 2016-05-24 17:16:42 · 5669 阅读 · 1 评论 -
《深入理解mybatis原理(十一)》 Mybatis插件原理之实现细节
Mybatis采用责任链模式,通过动态代理组织多个拦截器(插件),通过这些拦截器可以改变Mybatis的默认行为(诸如SQL重写之类的),由于插件会深入到Mybatis的核心,因此在编写自己的插件前最好了解下它的原理,以便写出安全高效的插件。一、代理链的生成Mybatis支持对Executor、StatementHandler、PameterHandler和ResultSetHan原创 2016-08-14 12:22:46 · 1826 阅读 · 0 评论 -
《深入理解mybatis原理(十)》 Mybatis插件原理简单分析
我们目前在Mybatis中,我们知道Mybatis的Mapper是一个接口,而不是一个实体类。在Java中接口是没有办法运行的。那么它是怎么运行的呢?它是通过动态代理运行。一、MyBatis是怎么实现这个动态代理的/** * Copyright 2009-2015 the original author or authors. * * Licensed under原创 2016-08-14 10:42:37 · 2854 阅读 · 0 评论 -
《深入理解mybatis原理(九)》 Mybatis数据源与连接池
对于ORM框架而言,数据源的组织是一个非常重要的一部分,这直接影响到框架的性能问题。本文将通过对MyBatis框架的数据源结构进行详尽的分析,并且深入解析MyBatis的连接池。 本文首先会讲述MyBatis的数据源的分类,然后会介绍数据源是如何加载和使用的。紧接着将分类介绍UNPOOLED、POOLED和JNDI类型的数据源组织;期间我们会重点讲解POOLED类型的数据源和其实现的连接转载 2016-06-01 12:44:59 · 799 阅读 · 0 评论 -
《深入理解mybatis原理(八)》 MyBatis事务管理机制
MyBatis作为Java语言的数据库框架,对数据库的事务管理是其非常重要的一个方面。本文将讲述MyBatis的事务管理的实现机制。首先介绍MyBatis的事务Transaction的接口设计以及其不同实现JdbcTransaction和ManagedTransaction;接着,从MyBatis的XML配置文件入手,讲解MyBatis事务工厂的创建和维护,进而阐述了MyBatis事务的创建和转载 2016-06-01 11:11:03 · 1253 阅读 · 1 评论 -
《深入理解mybatis原理(四)》 MyBatis的二级缓存的设计原理
目录(?)[+]MyBatis的缓存机制整体设计以及二级缓存的工作模式MyBatis二级缓存的划分使用二级缓存必须要具备的条件一级缓存和二级缓存的使用顺序二级缓存实现的选择MyBatis自身提供的二级缓存的实现写在后面关于涉及到的设计模式 MyBatis的二级缓存是Application级别的缓存,它可以提高对数据库查询的效率,以提高应用的性能。本文将全面分析M转载 2016-05-29 20:37:13 · 982 阅读 · 0 评论 -
《深入理解mybatis原理(七)》 MyBatis的架构设计以及实例分析
MyBatis是目前非常流行的ORM框架,它的功能很强大,然而其实现却比较简单、优雅。本文主要讲述MyBatis的架构设计思路,并且讨论MyBatis的几个核心部件,然后结合一个select查询实例,深入代码,来探究MyBatis的实现。一、MyBatis的框架设计 注:上图很大程度上参考了iteye 上的chenjc_it 所写的博文原理分析之二:框架整体设计转载 2016-05-31 17:29:12 · 2007 阅读 · 1 评论 -
《深入理解mybatis原理(六)》 MyBatis缓存机制的设计与实现如何细粒度地控制你的MyBatis二级缓存
前几天网友chanfish 给我抛出了一个问题,笼统地讲就是如何能细粒度地控制MyBatis的二级缓存问题,酝酿了几天,觉得可以写个插件来实现这个这一功能。本文就是从问题入手,一步步分析现存的MyBatis的二级缓存的不足之处,探讨一点可以改进的地方,并且对不足之处开发一个插件进行弥补。本文如下组织结构:一个关于MyBatis的二级缓存的实际问题当前MyBatis二级缓存的工作转载 2016-05-31 16:15:35 · 1069 阅读 · 0 评论 -
《深入理解mybatis原理(五)》 MyBatis缓存机制的设计与实现
本文主要讲解MyBatis非常棒的缓存机制的设计原理,给读者们介绍一下MyBatis的缓存机制的轮廓,然后会分别针对缓存机制中的方方面面展开讨论。MyBatis将数据缓存设计成两级结构,分为一级缓存、二级缓存: 一级缓存是Session会话级别的缓存,位于表示一次数据库会话的SqlSession对象之中,又被称之为本地缓存。一级缓存是MyBatis内部实现的一个特性,用户不转载 2016-05-31 10:43:35 · 989 阅读 · 0 评论 -
《深入理解mybatis原理(二)》 Mybatis关联查询问题
版权声明:本文为博主原创文章,未经博主允许不得转载。目录(?)[+]嵌套语句查询嵌套语句查询的原理N1问题嵌套结果查询mybatis 提供了高级的关联查询功能,可以很方便地将数据库获取的结果集映射到定义的Java Bean 中。下面通过一个实例,来展示一下Mybatis对于常见的一对多和多对一关系复杂映射是怎样处理的。设计一个简单的博客系转载 2016-05-25 14:06:40 · 2692 阅读 · 0 评论 -
《深入理解mybatis原理(三)》 MyBatis的一级缓存实现详解 及使用注意事项
0.写在前面 MyBatis是一个简单,小巧但功能非常强大的ORM开源框架,它的功能强大也体现在它的缓存机制上。MyBatis提供了一级缓存、二级缓存 这两个缓存机制,能够很好地处理和维护缓存,以提高系统的性能。本文的目的则是向读者详细介绍MyBatis的一级缓存,深入源码,解析MyBatis一级缓存的实现原理,并且针对一级缓存的特点提出了在实际使用过程中应该注意的事项。转载 2016-05-26 15:00:26 · 1407 阅读 · 0 评论 -
《深入理解mybatis原理(十二)》 mybatis深入理解之#与$区别
一、介绍 mybatis 中使用 Mapper.xml里面的配置进行 sql 查询,经常需要动态传递参数,例如我们需要根据用户的姓名来筛选用户时,sql 如下:select * from user where name = "Jack";上述 sql 中,我们希望 name 后的参数 "Jack" 是动态可变的,即不同的时刻根据不同的姓名来查询用户。在Ma原创 2016-11-19 16:00:45 · 19391 阅读 · 7 评论