自定义Mybatis设计分析

自定义Mybatis设计分析

原理

基于配置文件解析,以及接口的动态代理实现方法的增强。

动态代理

https://blog.csdn.net/weixin_45390091/article/details/105492769

配置文件解析

使用xml解析技术

思考

mybatis做了什么? 简化sql操作提高效率
通过对比查询操作原本的过程,与使用mybatis之后的过程做分析

JDBC
1.注册驱动获取连接
2.获取预处理对象
3.执行查询
4.解析封装

mybatis
1.解析xml文件,Resources.getResourceAsStream()
2.创建sqlSessionFactroyBuilder
3.创建SqlSessionFactory
4.创建SqlSession
5.创建代理对象
6.直接方法接收结果


可以看出只有执行查询这步骤是和原本的步骤类似的其他均被封装了。
所以mybatis是对所有的操作进行了封装改造。
那么根据mybatis原理一步步将JDBC封装起来。

1.需要用户提供的数据
	一、数据库环境
	二、驱动,接数据
	三、事务
	四、代理接口的全限定类名
	五、对应执行方法的信息以及sql语句
	
需要通过一个统一的方式将框架需要的数据读取进来,这边选择使用配置文件,一般操作一个库中的多个表所以,数据库基本信息是不变的,表对应的model和dao的不同的,为了防止操作不同的表时造成xml的频繁修改,这边需要将配置文件分为两个mybatis_config.xml和mapperDao.xml
	
	
2.具体执行的方法类
	一、读取配置文件信息
	二、驱动注册获取数据源
	三、获取连接
	四、实现JDK动态代理接口
	五、实现代理对象方法的增强

解析xml,对每个部分进行抽象解耦,方便日后的维护和拓展。
通过debug源码知道mybatis大概分为这几个主要部分
sqlSessionFactroyBuild 构建者模式
sqlSessionFactroy 工厂模式
sqlSessionManage 获取连接,执行获取接口的代理对象
DefaultSqlSession 代理接口方法的最终执行处
MapperRegist 封装映射信息,map(全限定类名封装对象,mapper对象封装了方法对应的信息)
XMLConfigBuilder 解析配置文件
Configuration 配置信息封装
MapperProxyFactroy 代理mapper接口
MapperProxy 代理接口信息封装,代码执行
MapperMethod 实现的执行方法
StatementHandler 预处理对象
ResultSetHandler 结果处理对象

猜你喜欢

转载自blog.csdn.net/weixin_45390091/article/details/105497204
今日推荐