乐趣区

Mybatis源码分析(1) – Mybatis包目录简介

Mybatis 核心包

包名称
包内内容简介

annotation
注解目录。包括所有的注解。如 @SELECT,@UPDATE 等

binding
Mapper 类的实例反射生成工具目录

builder
主要是注解,mapper 和 SqlSuorce 的构造器及转换器

cache
Mybatis 内部缓存接口。实现了一些特定的缓存策略。FifoCache,LruCache,BlockingCache,LoggingCache 等

cursor
默认的游标处理类

dataSource
数据源工厂类及实现。实现类包括 JndiDataSourceFactory、PooledDataSourceFactory、UnpooledDataSourceFactory。数据源实现类:UnpooledDataSource、PooledDataSource

exceptions
Mybatis 自定义的三个异常类。ExceptionFactory、PersistenceException、TooManyResultsException、IbatisException。都继承自 RuntimeException

executor
执行器相关包。包括 Key 生成器、加载器(包括 Cglib、Javassist 的代理,结果加载器)、参数处理器接口、结果处理器、结果集 (resultSet) 处理器、Statement 处理器(实现类:BaseStatementHandler、CallableStatementHandler、PreparedStatementHandler、RoutingStatementHandler、SimpleStatementHandler)、执行器(SimpleExecutor、ReuseExecutor、CachingExecutor、BatchExecutor、BaseExecutor)

io
主要是定义的几个 VFS(VFS、DefaultVFS、ClassLoaderWrapper)

javassist
javassist 的字节码处理包

jdbc
与 Sql 相关的操作。如 Sql 运行器,脚本运行器和 Sql 封装类等

lang
指定是用 java7 还是 java8 的 API 的注解.UsesJava7、UsesJava8

logging
各个类型的日志适配器,都实现了 Log 接口。StdOutImpl、Slf4jImpl、NoLoggingImpl、Log4j2Impl、Log4jImpl、Jdk14LoggingImpl、BaseJdbcLogger、JakartaCommonsLoggingImpl

mapping
主要是接口参数,sql 和返回结果的映射类,主要类包括:MappedStatement,ParameterMap,ParameterMapping,ResultMap,ResultMapping,BoundSql,SqlSource 等类

ognl
ognl 包在 Mybatis 中的内部代码引用

parsing
变量解析. 如解析 ${},#{}等

plugin
主要包含插件的定义接口。如 Interceptor,Plugin,InterceptorChain 等

reflection
主要是一些反射操作的工具方法和对象工厂类,以及一些常用的包装类,如 BaseWrapper,BeanWrapper,CollectionWrapper,MapWrapper,ObjectWrapper,,,

scripting
执行驱动和动态 Sql 解析的老巢

session
主要是 SqlSession 和 SqlSessionFactory

transaction
主要是 mybatis 简单封装的 jdbc 事务操作类

type
各个类型数据的处理器。用于动态的设置参数和转换数据。如 IntegerTypeHandler 用来处理 Integer 类型的值的 set 和 get 操作。除了八大基本类型。还有常用的集合及 Map 类型,还增加了各种时间类型的处理器

总结
通过整理每个包的主要功能。通览整个 mybatis 的代码结构,了解各个组件的位置和大概的处理关系。为后续分析源码打下基础。

退出移动版