ibatis核心类

SqlMapExecutor:定义了数据库curd操作api

SqlMapTransactionManager : 主要定义了事务管理功能

SqlMapClient:继承SqlMapExecutor, SqlMapTransactionManager接口  也就具有curd操作 事务管理行为

SqlMapSession: 它有SqlMapClient实现接口一样,  SqlMapClient的实例中持有SqlMapSession的引用  , 也就是说在SqlMapClient的基础上 包装了一层, SqlMapSession 的实例对于SqlMapClient来说是线程安全的 在SqlMapClient中主要使用到 了 ThreadLocal来控制

从以上可以看出ibatis api入口有两个

1. 通过 SqlMapClientBuilder 的buildSqlMapClient方法 构造SqlMapClient的实例来完成curd操作  这个也是最传统的

2.以SqlMapSession为入口  在执行完curd操作后  调用close方法 关闭Statement

inser操作时序图

SqlMapExecutorDelegate: 这个类耦合了 curd的执行环境 通过调用其他各个组件类的方法 完成操作  事务就在此控制

MappedStatement : 保存sqlmap 映射文件statement的定义  还会涉及到处理sql 参数(ParameterMap)   返回结果(ResultMap)

SqlExecutor: 包装了Statement的执行

StatementScope:一次数据库操作上下文

SessionScope:一次请求上下文, 一次请求可能包括多个数据库操作, 同一事务.

MappedStatement 类图

转载于:https://www.cnblogs.com/yangjin-55/archive/2012/06/10/2786535.html

ibatis源码浅析- 初探相关推荐

  1. hashmap允许null键和值吗_hashMap底层源码浅析

    来源:https://blog.csdn.net/qq_35824590/article/details/111769203 hashmap是我们经常使用的一个工具类.那么知道它的一些原理和特性吗? ...

  2. Android Loader机制全面详解及源码浅析

    原文出处:csdn@工匠若水,http://blog.csdn.net/yanbober/article/details/48861457 一.概述 在Android中任何耗时的操作都不能放在UI主线 ...

  3. 内核启动流程分析(四)源码浅析

    目录 kernel(四)源码浅析 建立工程 启动简析 head.s 入口点 查询处理器 查询机器ID 启动MMU 其他操作 start_kernel 处理命令行 分区 kernel(四)源码浅析 建立 ...

  4. harbor登录验证_Harbor 源码浅析

    Harbor 源码浅析​www.qikqiak.com Harbor 是一个CNCF基金会托管的开源的可信的云原生docker registry项目,可以用于存储.签名.扫描镜像内容,Harbor 通 ...

  5. fetch first mysql_MySQL多版本并发控制机制(MVCC)源码浅析

    MySQL多版本并发控制机制(MVCC)-源码浅析 前言 作为一个数据库爱好者,自己动手写过简单的SQL解析器以及存储引擎,但感觉还是不够过瘾.<>诚然讲的非常透彻,但只能提纲挈领,不能让 ...

  6. 【flink】Flink 1.12.2 源码浅析 : Task数据输入

    1.概述 转载:Flink 1.12.2 源码浅析 : Task数据输入 在 Task 中,InputGate 是对输入的封装,InputGate 是和 JobGraph 中 JobEdge 一一对应 ...

  7. 【flink】Flink 1.12.2 源码浅析 :Task数据输出

    1.概述 转载:Flink 1.12.2 源码浅析 :Task数据输出 Stream的计算模型采用的是PUSH模式, 上游主动向下游推送数据, 上下游之间采用生产者-消费者模式, 下游收到数据触发计算 ...

  8. 【flink】Flink 1.12.2 源码浅析 : StreamTask 浅析

    1.概述 转载:Flink 1.12.2 源码浅析 : StreamTask 浅析 在Task类的doRun方法中, 首先会构建一个运行环境变量RuntimeEnvironment . 然后会调用lo ...

  9. 【flink】Flink 1.12.2 源码浅析 : Task 浅析

    1.概述 转载:Flink 1.12.2 源码浅析 : Task 浅析 Task 表示TaskManager上并行 subtask 的一次执行. Task封装了一个Flink operator(也可能 ...

最新文章

  1. 2021年大数据ELK(七):安装Elasticsearch-head插件
  2. 字节最新文本生成图像AI,训练集里居然没有一张带文字描述的图片?!
  3. 遗传算法解决排序问题
  4. 百兆以太网传输距离_罗森伯格陪你做车载——汽车以太网(三)
  5. 【原创】如何使用Jmockit进行单元测试
  6. mysql 记录所有操作_mysql 的一些记录的操作
  7. 网站程序员的程序员成长之路大概分几个阶段 和未来的发展
  8. Elasticsearch7.15.2 集成ik中文分词器 适用于单机和集群
  9. 宁波大学计算机应用技术考研,宁波大学2021年计算机考研拟录取数据分析
  10. 维基媒体宣布采用 Vue.js 进行前端开发
  11. 什么原因导致MacBook Pro过热?如何解决这一问题?
  12. 个图标当十个用—多功能系统级图标制作攻略
  13. android_x86安装arm转译
  14. MYSQL 按照身份证筛选年龄和性别
  15. VUE使用echarts实现中国地图航线动态展示
  16. java modelbus_modelbus tcp java
  17. 249PHP等于多少钱,一百万新台币等于多少人民币
  18. 网络写作一年稿酬最高可达150万元
  19. VC中用代码移动CDockPane的位置
  20. IIS服务器安全配置[摘]

热门文章

  1. Solidity基础入门知识(十)函数的访问权限和可见性
  2. Nagios的安装和基本配置(四:调试验证 错误总结)
  3. 怎样把字符1变成数字1
  4. PAT甲级排队问题合集 (持续更新中)
  5. 验证(verification)和确认(validation)
  6. ui设计怎样做出有效果的视觉层级?
  7. 女生参加web前端培训可以吗
  8. 报错:该字符串未被识别为有效的DateTime
  9. JavaScript基础笔记集合(转)
  10. 设计模式(4)-序列生成器之单例模式