`
gaojingsong
  • 浏览: 1182419 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

【Mybatis中的五鼠闹东京】

阅读更多

北宋仁宗时期,江湖上有著名的三侠五义,其中五义又称五鼠:钻天鼠卢方、彻地鼠韩彰、穿山鼠徐庆、翻江鼠蒋平、锦毛鼠白玉堂,

“三侠”是指北侠欧阳春、南侠展昭、丁氏双侠丁兆兰、丁兆蕙二人为一侠;“五义”是指钻天鼠卢方、彻地鼠韩彰、钻山鼠徐庆,翻江鼠蒋平,锦毛鼠白玉堂这五鼠弟兄。

 

一、Mybatis中的五鼠介绍

SqlSession对数据库的操作,将委托给执行器Executor来完成,而Executor由五鼠组成,分别是:

简单鼠SimpleExecutor、

重用鼠ReuseExecutor、

批量鼠BatchExecutor、

缓存鼠CachingExecutor、

无用鼠ClosedExecutor。

 

二、五鼠族谱如下:



 

五鼠都有哪些本领,能闹得起东京。

 

三、五鼠本领 -->八仙过海各显神通

1、简单鼠SimpleExecutor:每执行一次update或select,就开启一个Statement对象,用完立刻关闭Statement对象。(可以是Statement或PrepareStatement对象)

 

2、重用鼠ReuseExecutor:执行update或select,以sql作为key查找Statement对象,存在就使用,不存在就创建,用完后,不关闭Statement对象,而是放置于Map<String, Statement>内,供下一次使用。(可以是Statement或PrepareStatement对象)

 

3、批量鼠BatchExecutor:执行update(没有select,JDBC批处理不支持select),将所有sql都添加到批处理中(addBatch()),等待统一执行(executeBatch()),它缓存了多个Statement对象,每个Statement对象都是addBatch()完毕后,等待逐一执行executeBatch()批处理的;BatchExecutor相当于维护了多个桶,每个桶里都装了很多属于自己的SQL,就像苹果蓝里装了很多苹果,番茄蓝里装了很多番茄,最后,再统一倒进仓库。(可以是Statement或PrepareStatement对象)

 

4、缓存鼠CachingExecutor:装饰设计模式典范,先从缓存中获取查询结果,存在就返回,不存在,再委托给Executor delegate去数据库取,delegate可以是上面任一的SimpleExecutor、ReuseExecutor、BatchExecutor。

 

5、无用鼠ClosedExecutor:毫无用处,读者可自行查看其源码,仅作为一种标识,和Serializable标记接口作用相当。

 

作用范围:以上这五鼠的作用范围,都严格限制在SqlSession生命周期范围内。

 

四、Mybatis中的设计模式介绍

Mybatis至少遇到了以下的设计模式的使用:

1)Builder模式,例如SqlSessionFactoryBuilder、XMLConfigBuilder、XMLMapperBuilder、XMLStatementBuilder、CacheBuilder;

2)工厂模式,例如SqlSessionFactory、ObjectFactory、MapperProxyFactory;

3)单例模式,例如ErrorContext和LogFactory;

4)代理模式,Mybatis实现的核心,比如MapperProxy、ConnectionLogger,用的jdk的动态代理;还有executor.loader包使用了cglib或者javassist达到延迟加载的效果;

5)组合模式,例如SqlNode和各个子类ChooseSqlNode等;

6)模板方法模式,例如BaseExecutor和SimpleExecutor,还有BaseTypeHandler和所有的子类例如IntegerTypeHandler;

7)适配器模式,例如Log的Mybatis接口和它对jdbc、log4j等各种日志框架的适配实现;

8)装饰者模式,例如Cache包中的cache.decorators子包中等各个装饰者的实现;

9)迭代器模式,例如迭代器模式PropertyTokenizer;

 

  • 大小: 58.2 KB
0
0
分享到:
评论

相关推荐

    mybatis中文离线文档

    MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 这个"mybatis中文离线文档"包含了MyBatis框架的详尽说明和指南,对于...

    mybatis_3.5.9官方中文文档pdf

    MyBatis 的 XML 配置文件中包含了对 MyBatis 系统的核心设置,包括获取数据库连接实例的数据源(DataSource)以及决定事务作用域和控制方式的事务管理器(TransactionManager): ``` &lt;!DOCTYPE configuration ...

    mybatis的中文api文档

    MyBatis可以对配置和原生Map使用简单的XML或注解,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。MyBatis的其他语言版本包括英语、西班牙语、日语和韩语,以及简体中文。 ...

    MyBatis 中文官方文档

    文档中会详细解释MyBatis的配置,包括XML配置文件和基于注解的配置。XML配置文件主要用于定义数据源、事务管理器以及映射文件的位置。基于注解的配置则允许我们在实体类和Mapper接口上直接添加注解,减少XML配置的...

    MyBatis3官方中文文档

    MyBatis是一款流行的Java持久层框架,它的设计理念是通过简单的XML或注解用于配置和映射原始类型、接口和Java POJOs(Plain Old Java Objects,普通老式Java对象)为数据库中的记录。MyBatis可以与各种数据库交互,...

    mybatis中进行sqlserver分页

    mybatis中,sqlserver分页

    MyBatis API中文帮助文档

    Mybatis API中文帮助文档 Mybatis API中文帮助文档 Mybatis API中文帮助文档 Mybatis API中文帮助文档 Mybatis API中文帮助文档 Mybatis API中文帮助文档 Mybatis API中文帮助文档 Mybatis API中文帮助文档 Mybatis ...

    mybatis中文参考手册

    在MyBatis中,核心概念主要包括映射器(Mapper)和XML映射文件。映射器是MyBatis框架中的接口,定义了数据库操作的方法。XML映射文件则包含了SQL语句和方法的映射关系,使得Java方法能够执行特定的SQL操作。这两个...

    技巧:MyBatis 中的trim标签,好用!.zip

    技巧:MyBatis 中的trim标签,好用!.zip技巧:MyBatis 中的trim标签,好用!.zip技巧:MyBatis 中的trim标签,好用!.zip技巧:MyBatis 中的trim标签,好用!.zip技巧:MyBatis 中的trim标签,好用!.zip技巧:...

    mybatis中mapper文件resultMap中collection和association的使用

    mybatis中mapper文件resultMap中collection和association的使用,参考地址:https://blog.csdn.net/zhizhuodewo6/article/details/82863452

    Mybatis中执行String类型的自己拼写的sql,不执行配置文件中的sql

    在MyBatis框架中,有时候我们可能需要在代码中直接编写SQL语句,而不是通过XML配置文件来执行SQL。这种情况通常发生在动态SQL或者特定场景下的临时查询中。本篇文章将详细探讨如何在MyBatis中执行String类型的自定义...

    myBatis中文文档

    MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 在myBatis中文文档中,你会深入了解到以下关键知识点: 1. **安装与...

    mybatis中文教程

    在Java企业级应用中,MyBatis可以帮助开发者摆脱繁琐的JDBC代码和手动处理结果集,使得数据库操作更加简洁、高效。这个压缩包中的"MyBatis中文教程.pdf"应该是一个详细的指南,旨在帮助开发者理解并熟练使用MyBatis...

    mybatis-spring中文文档

    MyBatis-Spring是MyBatis与Spring框架整合的一个类库,它能将MyBatis代码无缝地整合到Spring环境中。通过MyBatis-Spring,Spring可以加载必要的MyBatis工厂类和session类。此外,该类库支持将MyBatis数据映射器和...

    mybatis中的generator工具

    在本篇文章中,我们将深入探讨MyBatis Generator的使用方法、主要功能以及如何结合MyBatis框架来提升开发效率。 一、MyBatis Generator简介 MyBatis Generator是一个基于Java的代码生成器,它能够根据数据库表结构...

    mybatis3.4.6中文开发手册

    在上述配置中,开发者可以设置数据源(DataSource)和事务管理器(TransactionManager),这些都是MyBatis中至关重要的组件。 ### 版本差异 MyBatis 3.4.6版本相较于之前版本有较大的改进和功能更新,其中可能包括...

    MyBatis3.3.0中文文档

    MyBatis允许开发者编写SQL语句,并将其绑定到映射的Java对象中。与JDBC相比,MyBatis能显著减少代码量,同时避免手动设置参数和获取结果集的工作。 MyBatis中文文档的目的是帮助开发者快速了解和掌握MyBatis 3.3.0...

    Mybatis 中文文档 3.4.CHM

    MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。 帮助改进文档... 不管你以何种方式发现了文档的不足,或是丢失对某...

    MyBatis官方中文帮助文档手册

    4. **参数映射和结果映射**:MyBatis自动将Java对象与数据库中的字段进行映射,减少了手动设置参数和获取结果集的麻烦。 5. **缓存机制**:MyBatis内置了两级缓存,一级缓存是SqlSession级别的,二级缓存是Mapper...

Global site tag (gtag.js) - Google Analytics