使用端 :
提供核⼼配置⽂件:
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自定义持久层框架内容请搜索七叶笔记以前的文章或继续浏览下面的相关文章希望大家以后多多支持七叶笔记!