美文网首页
1.mybatis源码:模块划分

1.mybatis源码:模块划分

作者: 天还下着毛毛雨 | 来源:发表于2020-08-21 19:15 被阅读0次

Mybatis模块分层

image.png
基础支撑层:技术组件专注于底层技术实现,通用性较强无业务含义;
核心处理层:业务组件专注 MyBatis 的业务流程实现,依赖于基础支撑层; 
接口层:MyBatis 对外提供的访问接口,面向 SqlSession 编程;
为什么要分层?
1.代码和系统的可维护性更高。系统分层之后,每个层次都有自己的定位,
每个层次内部的组件都有自己的分工,系统就会变得很清晰,维护起来非常明确;

2.方便开发团队分工和开发效率的提升

3.提高系统的伸缩性和性能。

Mybatis各个模块作用:

1. org.apache.ibatis.annotations:注解功能
包含所有mapper 接口中用到的注解
例如常用的 @Param,@Update、@Select、@Delete 等
2. org.apache.ibatis.binding:mapper代理映射
生成mapper 接口的动态代理并进行管理
3.org.apache.ibatis.builder:xml解析
BaseBuilder 构建器基类
XMLConfigBuilder 解析configuration.xml配置文件
XMLMapperBuilder 解析Mapper.xml配置文件
XMLStatementBuilder 解析elect\update\delete  标签
MapperAnnotationBuilder 注解式Mapper
4. org.apache.ibatis.cache:缓存
缓存功能实现、包含各种缓存装饰器
TransactionalCache 二级缓存功能实现
5. org.apache.ibatis.cursor:游标
实现游标的方式查询数据、游标非常适合处理百万级别的数据查询,
通常情况下不适合一次性加载到内存中
这种方式类似使用SAX解析XML文件
6. org.apache.ibatis.datasource:数据源
数据源 包括jndi数据源、连接池功能
7. org.apache.ibatis.executor:执行器
包含SQL语句执行器,核心功能包

功能包括:
主键生成功能
执行参数解析功能
执行结果集解析功能
SQL执行器
缓存执行器

ErrorContext 错误上下文对象,跟踪所有执行流程
8. org.apache.ibatis.exceptions:mybatis异常
框架异常,常见异常:TooManyResultsException
9. org.apache.ibatis.io :io操作
资源文件读取
10. org.apache.ibatis.jdbc:jdbc
JDBC一些操作

SqlRunner SQL执行
ScriptRunner 脚本执行,可以执行建库语句
在执行测试用例时候用的非常多
11. org.apache.ibatis.lang
这个包只有2个注解 @UsesJava7 @UsesJava8 
使用这个两个注解标识哪些可以使用JDK7 API 哪些可以使用JDK8 API
12. org.apache.ibatis.logging :日志
日志功能,实现多种日志框架的对接

org.apache.ibatis.logging.jdbc 代理所有功能JDBC 操作,
实现了在debug模式下能够输出SQL
13. org.apache.ibatis.mapping :mapper映射java类
配置文件与实体对象的映射功能,Mapper映射、参数映射、结果映射等
14. org.apache.ibatis.parsing : 解析
解析工具包 

GenericTokenParser:解析#{} ${} 这种占位符
XPathParser:XPath形式解析XML
PropertyParser: properties解析器
org.apache.ibatis.plugin
15. org.apache.ibatis.plugin :插件
拦截器功能实现,使用代理模式实现拦截
16. org.apache.ibatis.reflection : 反射包
反射器功能,这个包下实现元数据编程

通过把Java对象转换成 元数据对象MetaObject,然后就可以对元数据对象进行赋值操作,数据库查询结果到Java对象映射就是通过元对象实现
17. org.apache.ibatis.scripting :动态sql脚本执行
动态SQL语言实现,
配置文件中<if> <where> <set> <foreach> <choose>  
功能就是在这个包实现,
借助OGNL表达式,你也可以扩展自己的语言实现功能
18. org.apache.ibatis.session : sql会话
主要实现SqlSession功能,非常核心包
官方注释:
    SqlSession包含了MyBatis工作的所有的Java接口,
    通过这些接口你可以 执行SQL命令(insert\delete\update\select),
    获取Mapper,管理实务
19. org.apache.ibatis.transaction : 事务
事务功能实现,包装了数据库连接,处理数据库连接生命周期包括:连接创建,预编译,提交\回滚和关闭
20. org.apache.ibatis.type 类型处理器
类型处理器,包括所有数据库类型对应Java类型的处理器,
如果要实现自己类型处理器就需要实现包下的基础接口

相关文章

网友评论

      本文标题:1.mybatis源码:模块划分

      本文链接:https://www.haomeiwen.com/subject/oxukjktx.html