北宋仁宗时期,江湖上有著名的三侠五义,其中五义又称五鼠:钻天鼠卢方、彻地鼠韩彰、穿山鼠徐庆、翻江鼠蒋平、锦毛鼠白玉堂,
“三侠”是指北侠欧阳春、南侠展昭、丁氏双侠丁兆兰、丁兆蕙二人为一侠;“五义”是指钻天鼠卢方、彻地鼠韩彰、钻山鼠徐庆,翻江鼠蒋平,锦毛鼠白玉堂这五鼠弟兄。
一、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;
相关推荐
MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 这个"mybatis中文离线文档"包含了MyBatis框架的详尽说明和指南,对于...
MyBatis 的 XML 配置文件中包含了对 MyBatis 系统的核心设置,包括获取数据库连接实例的数据源(DataSource)以及决定事务作用域和控制方式的事务管理器(TransactionManager): ``` <!DOCTYPE configuration ...
mybatis中,sqlserver分页
MyBatis可以对配置和原生Map使用简单的XML或注解,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。MyBatis的其他语言版本包括英语、西班牙语、日语和韩语,以及简体中文。 ...
文档中会详细解释MyBatis的配置,包括XML配置文件和基于注解的配置。XML配置文件主要用于定义数据源、事务管理器以及映射文件的位置。基于注解的配置则允许我们在实体类和Mapper接口上直接添加注解,减少XML配置的...
MyBatis是一款流行的Java持久层框架,它的设计理念是通过简单的XML或注解用于配置和映射原始类型、接口和Java POJOs(Plain Old Java Objects,普通老式Java对象)为数据库中的记录。MyBatis可以与各种数据库交互,...
Mybatis API中文帮助文档 Mybatis API中文帮助文档 Mybatis API中文帮助文档 Mybatis API中文帮助文档 Mybatis API中文帮助文档 Mybatis API中文帮助文档 Mybatis API中文帮助文档 Mybatis API中文帮助文档 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中mapper文件resultMap中collection和association的使用,参考地址:https://blog.csdn.net/zhizhuodewo6/article/details/82863452
MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 在myBatis中文文档中,你会深入了解到以下关键知识点: 1. **安装与...
在MyBatis框架中,有时候我们可能需要在代码中直接编写SQL语句,而不是通过XML配置文件来执行SQL。这种情况通常发生在动态SQL或者特定场景下的临时查询中。本篇文章将详细探讨如何在MyBatis中执行String类型的自定义...
MyBatis-Spring是MyBatis与Spring框架整合的一个类库,它能将MyBatis代码无缝地整合到Spring环境中。通过MyBatis-Spring,Spring可以加载必要的MyBatis工厂类和session类。此外,该类库支持将MyBatis数据映射器和...
在本篇文章中,我们将深入探讨MyBatis Generator的使用方法、主要功能以及如何结合MyBatis框架来提升开发效率。 一、MyBatis Generator简介 MyBatis Generator是一个基于Java的代码生成器,它能够根据数据库表结构...
在上述配置中,开发者可以设置数据源(DataSource)和事务管理器(TransactionManager),这些都是MyBatis中至关重要的组件。 ### 版本差异 MyBatis 3.4.6版本相较于之前版本有较大的改进和功能更新,其中可能包括...
MyBatis允许开发者编写SQL语句,并将其绑定到映射的Java对象中。与JDBC相比,MyBatis能显著减少代码量,同时避免手动设置参数和获取结果集的工作。 MyBatis中文文档的目的是帮助开发者快速了解和掌握MyBatis 3.3.0...
MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。 帮助改进文档... 不管你以何种方式发现了文档的不足,或是丢失对某...
mybatis中的事务的开启,有利于读者自己配置mybatis参数,实现自己的要求。
在MyBatis与Spring整合的框架中,为了便于调试和性能优化,我们常常需要在日志中打印出执行的SQL语句。以下是如何在这样的环境中配置日志来显示SQL语句的详细步骤。 首先,我们需要了解MyBatis的日志实现。MyBatis...