深入分析 iBATIS 框架之系统架构与映射原理 深入浅出MyBatis

深入分析 iBATIS 框架之系统架构与映射原理

iBATIS 框架主要的类层次结构 总体来说 iBATIS 的系统结构还是比较简单的,它主要完成两件事情: 根据 JDBC 规范建立与数据库的连接; 通过反射打通 Java 对象与数据库参数交互之间相互转化关系。 iBATIS 的框架结构也是按照这种思想来组织类层次结构的,其实它是一种典型的交互式框架。先期准备好交互的必要条件,然后构建一个交互的环境,交互环境中还划分成...
阅读全文
12.终结篇:MyBatis原理深入解析 深入浅出MyBatis

12.终结篇:MyBatis原理深入解析

1 引言 本文主要讲解JDBC怎么演变到Mybatis的渐变过程,重点讲解了为什么要将JDBC封装成Mybaits这样一个持久层框架。再而论述Mybatis作为一个数据持久层框架本身有待改进之处。 2 JDBC实现查询分析 我们先看看我们最熟悉也是最基础的通过JDBC查询数据库数据,一般需要以下七个步骤: 加载JDBC驱动; 建立并获取数据库连接; 创建 JDBC Sta...
阅读全文
11.缓存源码分析 深入浅出MyBatis

11.缓存源码分析

1 缓存介绍 MyBatis支持声明式数据缓存(declarative data caching)。当一条SQL语句被标记为“可缓存”后,首次执行它时从数据库获取的所有数据会被存储在一段高速缓存中,今后执行这条语句时就会从高速缓存中读取结果,而不是再次命中数据库。MyBatis提供了默认下基于Java HashMap的缓存实现,以及用于与OSCache、Ehcache、Hazelcast和Mem...
阅读全文
10.与Spring集成 深入浅出MyBatis

10.与Spring集成

单独使用mybatis是有很多限制的(比如无法实现跨越多个session的事务),而且很多业务系统本来就是使用spring来管理的事务,因此mybatis最好与spring集成起来使用。 1 Spring集成配置 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">...
阅读全文
9.改造Cache插件 深入浅出MyBatis

9.改造Cache插件

在前面的文章里,介绍了两个插件:根据注解实现的sql自动生成插件和分页插件。这两个插件在没有开启cache的情况下可以很好的使用,但开启cache后却出现了一些问题,为了解决这些问题,编写了拦截cache的插件,通过这个拦截器修正了这些问题。 1 问题 1.1 什么问题 最容易出现的问题是开启cache后,分页查询时无论查询哪一页都返回第一页的数据。另外,使用sql自动生成插件生成get方法...
阅读全文
8.SQL自动生成插件 深入浅出MyBatis

8.SQL自动生成插件

本文提供了一种自动生成sql语句的方法,它针对的对象是有主键或唯一索引的单表,提供的操作有增、删、改、查4种。理解本文和本文的提供的代码需要有java注解的知识,因为本文是基于注解生成sql的。 1 准备 1.1 为什么在StatementHandler拦截 在SQL执行流程分析(源码篇)章节介绍了一次sqlsession的完整执行过程,从中可以知道sql的解析是在StatementHand...
阅读全文
7.分页插件 深入浅出MyBatis

7.分页插件

Mybatis的分页功能很弱,它是基于内存的分页(查出所有记录再按偏移量和limit取结果),在大数据量的情况下这样的分页基本上是没有用的。本文基于插件,通过拦截StatementHandler重写sql语句,实现数据库的物理分页。 1 准备 1.1 为什么在StatementHandler拦截 在SQL执行流程分析(源码篇)章节介绍了一次sqlsession的完整执行过程,从中可以知道sq...
阅读全文
6.插件原理 深入浅出MyBatis

6.插件原理

MyBatis提供了一种插件(plugin)的功能,虽然叫做插件,但其实这是拦截器功能。那么拦截器拦截MyBatis中的哪些内容呢? MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis允许使用插件来拦截的方法调用包括: Executor (update, query, flushStatements, commit, rollback, ge...
阅读全文
5.SQL执行流程分析(源码篇) 深入浅出MyBatis

5.SQL执行流程分析(源码篇)

前面的章节主要讲mybatis如何解析配置文件,这些都是一次性的过程。从本章开始讲解动态的过程,它们跟应用程序对mybatis的调用密切相关。本章先从sqlsession开始。 1 SqlSessionFactory 与 SqlSession 通过前面的章节对于mybatis 的介绍及使用,大家都能体会到SqlSession的重要性了吧,没错,从表面上来看,咱们都是通过SqlSession去执...
阅读全文
4.强大的动态SQL 深入浅出MyBatis

4.强大的动态SQL

1 动态SQL 那么,问题来了: 什么是动态SQL? 动态SQL有什么作用? 传统的使用JDBC的方法,相信大家在组合复杂的的SQL语句的时候,需要去拼接,稍不注意哪怕少了个空格,都会导致错误。Mybatis的动态SQL功能正是为了解决这种问题, 其通过 if, choose, when, otherwise, trim, where, set, foreach标签,可组合成非常灵活的SQ...
阅读全文
3.Mapper映射文件配置 深入浅出MyBatis

3.Mapper映射文件配置

在mapper文件中,以mapper作为根节点,其下面可以配置的元素节点有: select, insert, update, delete, cache, cache-ref, resultMap, sql 。 1 insert, update, delete 的配置及使用 相信,看到insert, update, delete, 我们就知道其作用了,顾名思义嘛,myabtis 作为持久层框架...
阅读全文
Loading...