文档章节

Mybatis源码研究3:包和类的概述

jtn
 jtn
发布于 2015/04/13 15:08
字数 907
阅读 8
收藏 0

org.apache.ibatis
 
  1.annotation
  本包定义了Mybatis框架中的24个注解。
  本包对Mybatis的其它包没有任何依赖,也不依赖于第三方的库。
  本包只被builder.annotation包的MapperAnnotationBuilder类引用。
 
  2.binding
  映射绑定,mapper.xml等映射文件相关实体的抽象。
 
  3.builder
  解析Mybatis的配置文件和映射文件,包括Xml格式和Annotation格式2种配置。
 
  4.cache
 
  本包包含了Mybatis框架的缓存接口定义和实现。
  PerpetualCache直接实现了Cache接口,其它缓存类实现采用装饰模式实现。
  采用装饰模式,一个个包装起来,形成一个链,典型的就是SynchronizedCache->LoggingCache->SerializedCache->LruCache->PerpetualCache,通过链起来达到功能增加。
 
  缓存框架按照 Key-Value方式存储,Key的生成采取规则为:[hashcode:checksum:mappedStementId:offset:limit:executeSql:queryParams]。
 
  本包只引用了Mybatis的io包的Resources,不依赖于任何第三方库。
 
  Mybatis的其它包大量引用了本包中的类和接口,即严重依赖于本包。
 
 
  5.datasource
  数据源相关接口和类。
 
  本包主要引用了Mybatis的reflection的ExceptionUtil类和loggin包的Log接口和LogFactory类。
  Mybatis的session包的Configuration类,builder.xml包的XMLConfigBuilder类引用了本包中的类和接口。
 
  6.exceptions
 
 本包定义了Mybatis框架中的异常。
 只依赖于Mybatis的executor的ErrorContext。
 Mybatis的其它包大量引用了本包中的类和接口,即严重依赖于本包。
 
 
  7.executor
  执行器接口和实现类及周边类和接口。
 
  8.io
 
  本包主要包含了资源加载和访问相关的类。
 
 本包只引用了Mybatis的logging包的Log接口和LogFactory类。
 
 Mybatis的其它包大量引用了本包中的类和接口,即严重依赖于本包。

 
  9.jdbc
  JDBC和SQL相关的类。
 
  10.logging
 
 把日志抽象成Log接口,该接口有7种实现。
  1.Apache Commons Logging
  2.JDBC Logging
  3.Java Util Logging
  4.Log4j
  5.No Logging
  6.Slf4J
  7.Stdout
 
  一个接口多种实现是框架的一贯作风.
 
  本包主要依赖了,Mybatis的reflection包的ExceptionUtil和io包的Resources。
 
  以及第三方的Log4j,Slf4j,CommonsLogging。
 
  Mybatis的其它包大量引用了本包中的类和接口,即严重依赖于本包。
 
 
  11.mapping
  Mybatis配置文件-映射文件相关的类。
 
  12.metadata
 
  包含了3个元数据实体类和一个工厂类。
 Database是对数据库信息的封装,包括catalog,schema,tables。
 Table是对表的封装,包括name,columns,primaryKey,catalog,schema。
 Column是对列的封装,包括name和type。
 DatabaseFactory用来生成Database对象。
 
 本包对mybatis的其它包没有任何依赖,mybatis的其它包也不依赖于本包,
 即本包可以作为单独的组件或者工具类提出来。
 
  13.parsing
  解析配置文件的核心类和接口。
 
  14.plugin
   插件相关接口和类。
  
  15.reflection
  反射相关类。
 
  16.scripting
  脚本解析相关类。
 
  17.session
  会话相关类,提供对外核心接口.
 
  18.transaction
  Transaction接口是对事务的抽象,有2种实现方式:
  1.JdbcTransaction,jdbc:手动管理
  2.ManagedTransaction,managed:container manage the full lifecycle of the transaction
 
  TransactionFactory接口定义了生成Transaction接口(实现类)的若干方法。
  该接口有2种实现方式:
  1.JdbcTransactionFactory,Creates {@link JdbcTransaction} instances。
  2.ManagedTransactionFactory,Creates {@link ManagedTransaction} instances。
 
  本包主要依赖了Mybatis session包的TransactionIsolationLevel和exceptions包的PersistenceException。
 
  Mybatis的其它包大量引用了本包中的类和接口,即严重依赖于本包。
 
  19.type
  类型处理,包含了类型处理器接口TypeHandler,父类BaseTypeHandler,以及若干个子类。

© 著作权归作者所有

jtn

jtn

粉丝 12
博文 879
码字总数 879609
作品 0
武汉
程序员
私信 提问
SpringMVC文件上传源码分析前言

该如何研究SpringMVC的文件上传的源码呢? 研究源码并不是仅仅知道程序是怎样运行的,而应该从宏观的角度、不同的立场去看待问题。以SpringMVC文件上传的源码为例(麻雀虽小,五脏俱全),我...

乒乓狂魔
2015/02/15
1K
8
Mybatis源码学习(一)-整体框架理解

一、对源码先上一个结构图: 源代码主要在org.apache.ibatis目录下,18个包,其中在应用中主要的包有:builder、session、cache、type、transaction、datasource、jdbc、mapping,提供支撑服...

飓风2000
2014/07/22
9.5K
0
ant 源码分析 第一篇 找到源码所需要的jar包

开始研究ant的源码架构好久了,但是今天是第一次写博文。因为我在观察ant运行目录中没有找到相关的任何所需要的jar包,所以写下来等待大家来提供答案。 ant运行时需要的jar包都在%anthome%/l...

dml124
2014/03/09
69
0
MyBatis 源码分析——介绍

笔者第一次接触跟MyBatis框架是在2009年未的时候。不过那个时候的他并不叫MyBatis,而是叫IBatis。2010年的时候改为现在的名字——MyBatis。这几年过去了,对于笔者来讲有一点陌生了。而且那...

Java小铺
2018/08/10
129
0
Jetty9 源码初解(1)——Http

一、概述 个人是个实践型人员,所以打算看着jetty源码,从头开始组装Jetty。 首先从github.com里找到jetty-project项目,用git下载源码,本文以9.3.x为例。 首先Jetty作为一个web server,必...

戴的天
2015/10/12
847
0

没有更多内容

加载失败,请刷新页面

加载更多

《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
今天
6
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
今天
7
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
今天
5
0
OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
今天
1K
11
MongoDB系列-- SpringBoot 中对 MongoDB 的 基本操作

SpringBoot 中对 MongoDB 的 基本操作 Database 库的创建 首先 在MongoDB 操作客户端 Robo 3T 中 创建数据库: 增加用户User: 创建 Collections 集合(类似mysql 中的 表): 后面我们大部分都...

TcWong
今天
40
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部