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

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

ibatis框架主要的类层次结构

iBatis的作用:

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

ibatis框架的主要的类层次结构图
在这里插入图片描述
SqlMapClient接口定义了客户端的select、insert、update和delete操作

ibatis框架的设计策略

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

iBatis框架的运行原理

在这里插入图片描述
SQLMapSession负责创建数据库的连接,包括对事务的管理

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

简单工厂模式

简单工厂可以理解成是一个模子,结构图如下
在这里插入图片描述

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

iBatis中使用简单工厂模式

com.iBatis.aplmap.engine.exchange.DateExchangeFactory类使用的就是简单工厂模式
在这里插入图片描述

工厂模式

简单工厂是指定特定属性生产不同商品,工厂是根据不同工厂决定不同产品
在这里插入图片描述

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

iBatis中的go工厂模式实例、

iBatis中的资源加载就是工厂模式,对应的类是DataSOurceFactory,就是抽象工厂模式
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值