深入分析ibatis框架之系统架构与映射原理

ibatis通过把SQL Map将Java对象映射成SQL语句,将结果集再转化成Java对象。

ibatis框架主要的类层次结构

iBatis的作用:

  1. 根据JDBC规范建立与数据库的连接
  2. 通过反射打通Java对象与数据库参数交互之间相互转化的关系

ibatis框架的主要的类层次结构图
深入分析ibatis框架之系统架构与映射原理
SqlMapClient接口定义了客户端的select、insert、update和delete操作

ibatis框架的设计策略

iBatis设计的主要目的是为了让我们执行SQL时对输入输出的数据的管理更加方便
深入分析ibatis框架之系统架构与映射原理
数据映射大体过程:根据Statement中定义的SQL语句,解析出其中的参数,并照其出现的顺序保存在Map集合中,并按照Statement中定义的ParameterMap对象解析出参数的Java数据类型,根据其数据类型构建TypeHandler对象,参数值的复制是通过DateExchange对象完成的。
深入分析ibatis框架之系统架构与映射原理

iBatis框架的运行原理

深入分析ibatis框架之系统架构与映射原理
SQLMapSession负责创建数据库的连接,包括对事务的管理

  • ibatis自己管理是通过共享SQLMapSession对象实现的,多个Statement执行时共享一个SQLMapSession实例,而且线程安全的
  • 外部程序管理就要自己控制SQLMapSession对象的生命周期

简单工厂模式

简单工厂可以理解成是一个模子,结构图如下
深入分析ibatis框架之系统架构与映射原理

  • Product:抽象产品角色,定义了产品的通用属性,相当于模子,它定义了一些功能,功能的实现需要子类去完成
  • ConcreteProduct:具体产品角色,他实现了抽象产品所定义的功能,每一个ConcreteProduct相当于一个产品种类
  • SimpleFactory:工厂模式类,由他负责创建具体的产品,它根据客户的要求来生产具体的产品,但是这个产品都具有符合抽象产品定义的功能

iBatis中使用简单工厂模式

com.iBatis.aplmap.engine.exchange.DateExchangeFactory类使用的就是简单工厂模式
深入分析ibatis框架之系统架构与映射原理

工厂模式

简单工厂是指定特定属性生产不同商品,工厂是根据不同工厂决定不同产品
深入分析ibatis框架之系统架构与映射原理

  • Product:抽象产品角色,定义了产品的通用属性,相当于模子,它定义了一些功能,功能的实现需要子类去完成
  • ConcreteProduct:具体产品角色,他实现了抽象产品所定义的功能,每一个ConcreteProduct相当于一个产品种类
  • Factory:抽象工厂角色,定义所有工厂都应该具有的功能
  • ConcreteFactory:具体工厂模式类,实现了抽象工厂定义的所有功能,负责创建具体的产品,根据这个工厂的具体实现来声场具体的产品,但是这个产品也都符合抽象产品类定义的功能

iBatis中的go工厂模式实例、

iBatis中的资源加载就是工厂模式,对应的类是DataSOurceFactory,就是抽象工厂模式
深入分析ibatis框架之系统架构与映射原理