从 0 开始手写一个 Mybatis 框架,三步搞定!

  • 时间:
  • 浏览:4
  • 来源:大发5分6合_大发5分6合官网

MyBatis框架的核心功能虽然太难,无非好多好多 动态代理和jdbc的操作,难的是写出来可扩展,高内聚,低耦合的规范的代码。

从图中可不须要看出,MyConfiguration负责与人交互。待读取xml后,将属性和连接数据库的操作封塞进MyConfiguration对象中供中间的组件调用。本文将使用dom4j来读取xml文件,它具有性能优异和非常方便使用的特点。、2.创建SqlSession,搭建Configuration和Executor之间的桥梁

2、通过mybatis配置文件得到SqlSessionFactory

根据上文Mybatis流程,我复杂了下,分为以下步骤:

1. Mybatis框架流程简介

3. 实现另一方的Mybatis

基本操作配置完成,接下来亲戚亲戚大伙儿开使了实现MyConfiguration:

本文完成的Mybatis功能比较简单,代码还有或多或少须要改进的地方,亲戚亲戚大伙儿可不须要结合Mybatis源码去动手完善。

Java的基本数据类型

亲戚亲戚大伙儿好多好多 希望对指定的接口生成另另一一俩个 对象,使得执行它的事先能运行一句sql罢了,而接口无法直接调用妙招,好多好多 这里使用动态代理生成对象,在执行时还是回到MySqlSession中调用查询,最终由MyExecutor做JDBC查询。另另另一一俩个 设计是为了单一职责,可扩展性更强。

到这里,就完成了另一方的Mybatis框架,亲戚亲戚大伙儿测试一下:

首先,新建另另一一俩个 maven项目,在pom.xml中导入以下依赖:

Executor是另另一一俩个 执行器,负责SQL一段话的生成和查询缓存(缓存还没完成)的维护,也好多好多 jdbc的代码将在这里完成,不过本文只实现了单表,有兴趣的同学可不须要尝试完成多表。

POJO,java的对象

V:应用守护进程员的成长之路

在手写另一方的Mybatis框架事先,亲戚亲戚大伙儿先来了解一下Mybatis,它的源码中使用了小量的设计模式,阅读源码并观察设计模式在其中的应用,才不能更深入的理解源码(ref:Mybatis源码解读-设计模式总结)。

接下来实现亲戚亲戚大伙儿的MySqlSession,首先的成员变量里得有Excutor和MyConfiguration,代码的精髓就在getMapper的妙招里。



·END·

亲戚亲戚大伙儿对上图进行分析总结:

mybatisconfig.xml,配置文件的名称都不 固定的,配置了全局的参数的配置,全局只有有另另一一俩个 配置文件。

Mapper.xml 配置多个statemement,也好多好多 多个sql,整个mybatis框架中可不须要有多个Mappe.xml配置文件。

基本实现

路虽远,行则必至

Function对象包括sql的类型、妙招名、sql一段话、返回类型和参数类型。

4、SqlSession通过底层的Executor(执行器),执行器有2类实现:

6、参数输入执行并输出结果集,不会手动判断参数类型和参数下标位置,且自动将结果集映射为Java对象

创建User实体类,和UserMapper接口和对应的xml文件:

亲戚亲戚大伙儿总爱在使用框架时看完Session,Session到底是什么呢?另另一一俩个 Session仅拥有另另一一俩个 对应的数据库连接。例如于另另一一俩个 前段请求Request,它可不须要直接调用exec(SQL)来执行SQL一段话。

5、MappedStatement是通过Mapper.xml中定义statement生成的对象。

MyMapperProxy代理类完成xml妙招和真实妙招对应,执行查询:

HashMap,KV格式的数据类型

3、通过SqlSessionFactory得到SqlSession,用SqlSession就可不须要操作数据了。

涵盖缓存功能的实现

从流程图中的箭头可不须要看出,MySqlSession的成员变量中须要得有MyExecutor和MyConfiguration去集中做调配,箭头就像是某种生活关联关系。亲戚亲戚大伙儿另一方的MySqlSession将有另另一一俩个 getMapper妙招,好多好多 使用动态代理生成对象后,就可不须要做数据库的操作了。