Mabatis框架的手写之路--2.手写纯MyBatis思路及实现

创建Test类

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第1张图片

创建mybatis-config.xml配置文件

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第2张图片

创建UUserInfoMapper接口

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第3张图片

创建UUserInfoMapper.xml

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第4张图片  

创建UUserInfo类

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第5张图片

数据库的表结构

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第6张图片

 整个目录结构:

 第一步:读取mybatis-config.xml配置文件:

通过jdk自带的方法读取classpath目录下的文件

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第7张图片

第二步:构建SqlSessionFactory; 

创建MyConfiguration类

通过MyEnviroment来封装mybatis-config.xml

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第8张图片

创建MyEnviroment用来映射mybatis-config.xml中的配置信息

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第9张图片

创建MapperStatement类来映射Mapper.xml文件

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第10张图片  

 创建MySqlSessionFactory

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第11张图片

创建MySqlSessionFactoryBuilder类

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第12张图片

传入xml的解析类

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第13张图片

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第14张图片

修改xxMapper.xml的映射保存类型,对于mapper解析过来的文件,采用map数据结构进行存储

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第15张图片

 获取解析信息

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第16张图片

Test类

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第17张图片

启动服务器:

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第18张图片

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第19张图片

修改主函数

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第20张图片

添加openSession方法

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第21张图片

查看之前完整的mybatis运行,它里面有两个重要的属性configuration和executor

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第22张图片

创建MySqlSession

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第23张图片

 修改MySqlSessionFactory

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第24张图片

 现在准备初始化MyExecutor类

查看mybatis源码运行之后,查看executor的属性

我们可以发现,它直接就是对数据库的内容进行一个封装,也就是初始化数据源

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第25张图片

创建MyExecutor类

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第26张图片

 创建MyDataSourceInterface接口继承DataSource

设置为default之后,以后子类继承该接口就不需要全部实现了,只需要实现自己需要的就可以了。这是jdk8之后的特性!

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第27张图片

引入数据库的连接池:

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第28张图片

添加dataSource初始化

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第29张图片

运行之后

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第30张图片

 实现第四步:

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第31张图片

传入、返回泛型类 这样就能更好的去接收

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第32张图片

使用jdk的动态代理

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第33张图片

 创建MaperProxy类

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第34张图片

应用层传入的已经是class,不需要在getClass

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第35张图片

第五步:调用Mapper接口对象的方法操作数据库

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第36张图片

 

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第37张图片

运行的MaperProxy会调用invoke() ,那么我们的业务逻辑就在invoke中编写

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第38张图片

 修改MaperProxy的invoke()方法

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第39张图片

 增加selectOne()方法

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第40张图片

 传入MapperProxy类

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第41张图片

 添加有参构造函数

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第42张图片

 添加三个方法

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第43张图片

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第44张图片

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第45张图片

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第46张图片

 Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第47张图片

Mabatis框架的手写之路--2.手写纯MyBatis思路及实现_第48张图片

 

----------------未完待续----------------------------

你可能感兴趣的:(数据库)