七叶笔记 » java编程 » 解析MyBatis源码实现自定义持久层框架

解析MyBatis源码实现自定义持久层框架

自定义框架设计

使用端 :

提供核⼼配置⽂件:

sqlMapConfig.xml : 存放数据源信息,引⼊mapper.xml

Mapper.xml : sql语句的配置⽂件信息

框架端:

1.读取配置⽂件

读取完成以后以流的形式存在,我们不能将读取到的配置信息以流的形式存放在内存中,不好操作,可以创建JavaBean来存储

(1)Configuration : 存放数据库基本信息、Map<唯⼀标识,Mapper>, 唯⼀标识:namespace + "." + id

(2)MappedStatement:sql语句的id、sql语句、输⼊参数java类型、输出参数java类型

2.解析配置⽂件

创建SqlSessionFactoryBuilder类:

⽅法:返回值SqlSessionFactory,方法为build():

第⼀:使⽤dom4j解析配置⽂件,将解析出来的内容封装到Configuration和MappedStatement中

第⼆:创建SqlSessionFactory的实现类DefaultSqlSessionFactory

3.创建SqlSessionFactory:

⽅法:openSession() : 获取SqlSession接⼝的实现类实例对象

4.创建SqlSession接⼝及实现类:主要封装crud⽅法

⽅法:selectList(String mappedStatementId,Object... param):查询所有

selectOne(String mappedStatementId,Object... param):查询单个

具体实现:封装JDBC完成对数据库表的查询操作

涉及到的设计模式 :

Builder构建者模式、⼯⼚模式、代理模式

自定义框架实现

这里只做比较繁琐的查询单条和查询多条的实现,添加、修改、删除的参考自行实现。

使用端

创建sqlMapConfig.xml

mapper.xml

User实体类

框架端

创建⼀个Maven⼦⼯程并且导⼊需要⽤到的依赖坐标

Configuration配置类

MappedStatement类

Resources类

SqlSessionFactoryBuilder类

XMLConfigBuilder类

XMLMapperBuilder类

SqlSessionFactory接口及DefaultSqlSessionFactory实现类

SqlSession接口及DefaultSqlSession实现类

Executor接口及SimpleExecutor实现类

BoundSql类

GenericTokenParser、ParameterMapping、TokenHandler、ParameterMappingTokenHandler工具类

GenericTokenParser:解析${}或#{}中的参数名称

ParameterMapping:存储${}或#{}中的参数名称

TokenHandler:替换${}或#{}处理接口

ParameterMappingTokenHandler:替换${}或#{}处理接口的实现类

到此这篇关于手撕MyBatis源码实现自定义持久层框架的文章就介绍到这了,更多相关MyBatis自定义持久层框架内容请搜索七叶笔记以前的文章或继续浏览下面的相关文章希望大家以后多多支持七叶笔记!

相关文章