mybatis 3.4.6源码深度解析(一)

来源:个人比较懒 发布时间: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 

版权声明:本文为博主原创文章,转载请附上博文链接!


标签: 数据库
分享:
评论:
你还没有登录,请先