设为首页 收藏本站
查看: 1223|回复: 0

[经验分享] Mybatis源码研究3:包和类的概述

[复制链接]

尚未签到

发表于 2016-11-27 06:53:07 | 显示全部楼层 |阅读模式
  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,以及若干个子类。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-305889-1-1.html 上篇帖子: Spring下mybatis多数据源配置(转) 下篇帖子: Mybatis解决属性名与字段名不一致
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表