源码包结构介绍
包 | 说明 |
---|---|
annotations | 存放所有基于Java代码注解形式用到的注解 |
binding | 在获取到SqlSession之后,可以通过Mapper.class的方式,这个时候会通过MapperRegistry拿到这个class的一个代理MapperProxy,然后在执行这个class对应的方法的时候会被代理执行。 |
builder | 这个包里面放的时候解析构建,其中MapperAnnotationBuilder负责mapper接口的加载,XMLConfigBuilder是整个mybatis的核心接口,负责加载Configuration,XMLMapperBuilder则负责加载.xml文件类型的mapper |
cache | 这个包里面放了缓存相关的实现,最基础的是PerpetualCache这个类实现了Cache接口,在decorators下面的类,则是通过装饰者模式,对PerpetualCache进行的装饰 |
cursor | 这里面是游标相关的内容 |
datasource | 这里面放的是数据源相关的东西,其中包含池化的数据源跟未池化的数据源 |
exceptions | 里面放的是异常相关类 |
executor | 这里面是执行sql相关部分,核心的Executor接口,三个类型SIMPLE、REUSE、BATCH对应三个executor,还有一个CachingExecutor,这个是在允许缓存的时候,进行缓存相关的处理的,如果允许缓存的话,那么就在创建executor的时候,会将目标的executor进行包装一层caching,同时会在创建的时候对插件进行包装 |
io | 这个是io相关处理用到的包 |
jdbc | 这个是sql相关的测试辅助类 |
lang | |
logging | 日志相关 |
mapping | 一个核心类MappedStatement,这个映射后的声明,在mybatis加载的时候会加载所有的.xml中的方法,从而生成MappedStatement。 |
parsing | 这个里面是解析参数的。 |
plugin | 这个是插件相关的 |
reflection | 这个是反射相关的实现 |
scripting | |
session | 一个核心类Configuration,这个是mybatis的全局配置,以及提供给外部调用的接口,外部可以通过操作SqlSession这个接口来完成对数据库的操作。 |
transaction | 事务相关处理 |
type | 处理java的参数为jdbc参数,处理jdbc参数为java类型 |