Mybatis源码结构
2020-03-24 14:13:42 54 举报
AI智能生成
Mybatis源码结构
作者其他创作
大纲/内容
org.apache.ibatis.annotations
包含所有mapper接口中所用到的注解
例如常用的@Param、@Update、@Select、@Delete等
org.apache.ibatis.binding
生成mapper接口的动态代理并进行管理<br>
org.apache.ibatis.builder
包含Configuration对象所有构建器,主要包括XML、注解2中方式配置解析
BaseBuilder构建器基类<br>XMLConfigBuilder 解析configuration.xml配置文件<br>XMLMapperBuilder 解析Mapper.xml配置文件<br>XMLStatementBuilder 解析select/update/delete 标签<br>MapperAnnotationBuilder 注解式Mapper<br>
org.apache.ibatis.cache
缓存功能实现、包含各种缓存装饰器<br>
TransactionalCache 二级缓存功能实现<br>
org.apache.ibatis.cursor
实现游标的方式查询数据、游标非常适合处理百万级别的数据查询,通常情况下不适合一次性加载到内存中<br>这种方式类似使用SAX解析XML文件<br>
org.apache.ibatis.datasource
数据源 包括jndi数据源、连接池功能<br>
org.apache.ibatis.exceptions
异常框架,常见异常:TooManyResultExection
org.apache.ibatis.executor
包含SQL语句执行器,核心功能包
功能包含:<br>主键生成功能<br>执行参数解析功能<br>执行结果集解析功能<br>SQL执行器<br>缓存执行器<br>
ErrorContext 错误上下文对象,跟踪所有执行流程<br>
org.apache.ibatis.io
资源文件读取<br>
org.apache.ibatis.jdbc
JDBC一些操作
SqlRunner SQL执行<br>ScriptRunner 脚本执行,可以执行建库语句,在执行测试用例时候用的非常多<br>
org.apache.ibatis.lang
这个包只有两个注解@UsesJava7 @UsesJava8 使用这两个注解标识哪些可以使用JDK7 API 哪些可以使用JDK8 API<br>
org.apache.ibatis.logging
日志功能,实现多种日志框架的对象<br>
org.apache.ibatis.logging.jdbc 代理所有功能JDBC操作,实现了在debug模式下能够输出SQL<br>
org.apache.ibatis.mapping
配置文件与实体对象的映射功能,Mapper映射、参数映射、结果映射等<br>
org.apache.ibatis.parsing
解析工具包
GenericTokenParser:解析 #{} ${} 这种占位符<br>XPathParser:XPath形式注解XML<br>PropertyParser:properties解析器<br>
org.apache.ibatis.plugin
拦截功能实现,使用代理模式实现拦截
org.apache.ibatis.reflection
反射器功能,这个包下实现元数据编程
通过把Java对象转换成元数据对象MetaObject,然后就可以对元数据对象进行赋值操作,数据库查询结果到Java对象映射器就是通过元对象实现<br>
org.apache.ibatis.scripting
动态sql语句实现,配置文件中<if><where><set><foreach><choose>功能就是在这个包实现,借助OGNL表达式你也可以扩展自己的语言实现功能
org.apache.ibatis.session
主要实现SqlSession功能,非常核心包
官方注释:SqlSession包含了MyBatis工作的所有Java接口,通过这些接口你可以执行sql命令(insert/delete/update/select),获取Mapper,管理事务<br>
org.apache.ibatis.transaction
事务功能实现,包装了数据库连接,处理数据库连接生命周期包括:连接创建,预编译,提交/回滚和关闭
org.apache.ibatis.type
类型处理器,包括所有数据类型对应的Java类型的处理器,如果要实现自己类型处理器就需要实现包下的基础接口
0 条评论
下一页