来源:个人比较懒 发布时间:2018-11-01 10:19:56 阅读量:1276
文章目录
1 概述
1.1 环境搭建
1.2 项目层次结构介绍
1 概述
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集,其通过XML配置的方式消除了绝大部分JDBC重复代码以及参数的设置,结果集的映射。作为开发人员,为了更好地学习和,有必要深入研究了解优秀框架的源码和mybatis的设计思路,以便更好的借鉴。同时,可以通过研究源码,可以更好的领会设计模式的精髓。
1.1 环境搭建
可以从git源码链接上面下载mybatis源码,然后倒入idea,源码上面我这边使用的是3.4.6版本的源码
1.2 项目层次结构介绍
从MyBatis代码实现的来看,个人认下MyBatis主要包含以下这些核心部件:
SqlSession 作为MyBatis工作的主要顶层API,表示和数据库交互的会话,完成必要数据库增删改查功能
Executor MyBatis执行器,是MyBatis 调度的核心,负责SQL语句的生成和查询缓存的维护
StatementHandler 封装了JDBC Statement操作,负责对JDBC statement 的操作,如设置参数、将Statement结果集转换成List集合。
ParameterHandler 负责对用户传递的参数转换成JDBC Statement 所需要的参数,
ResultSetHandler 负责将JDBC返回的ResultSet结果集对象转换成List类型的集合;
TypeHandler 负责java数据类型和jdbc数据类型之间的映射和转换
MappedStatement MappedStatement维护了一条<select|update|delete|insert>节点的封装,
SqlSource 负责根据用户传递的parameterObject,动态地生成SQL语句,将信息封装到BoundSql对象中,并返回
BoundSql 表示动态生成的SQL语句以及相应的参数信息
Configuration MyBatis所有的配置信息都维持在Configuration对象之中。
MapperProxyFactory 接口代理工厂类这个类主要是试用jdk代理 mapper的实现 以实现调用SqlSession,接口类名称对应配置文件的nameSpace的值,等标签的id 对应方法名称
它们之间的关系(图片是盗来的):
如果MapperProxyFactory也要加到上面这张图上去的话,应该是要放在最上面了,这个是相当于就是自动实现mapper接口然后在调用sqlsession中的方法
---------------------
作者:个人比较懒
来源:CSDN
原文:https://blog.csdn.net/Y1230601/article/details/83586303
版权声明:本文为博主原创文章,转载请附上博文链接!