博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ibatis源码浅析- 初探
阅读量:4635 次
发布时间:2019-06-09

本文共 853 字,大约阅读时间需要 2 分钟。

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

你可能感兴趣的文章
Python的数据库操作(Sqlalchemy)
查看>>
2.抽取代码(BaseActivity)
查看>>
My simplified pickit2 clone
查看>>
jQuery-1.9.1源码分析系列(四) 缓存系统
查看>>
(转)面试必备技能:JDK动态代理给Spring事务埋下的坑!
查看>>
C语言 · 勾股数
查看>>
菜鸟初涉SQL Server的总结
查看>>
过犹不及
查看>>
Redis 入门知识
查看>>
夏天过去了, 姥爷推荐几套来自smashingmagzine的超棒秋天主题壁纸
查看>>
转--Android如何在java代码中设置margin
查看>>
反射的所有api
查看>>
Js 判断网页窗口是否滚动到底部
查看>>
上传文件
查看>>
css 定位及遮罩层小技巧
查看>>
用java向mysql数据库中插入数据为空
查看>>
项目中非常有用并且常见的ES6语法
查看>>
dateTimePicker编辑状态下,取值不正确的问题
查看>>
mac 端口转发方案
查看>>
[2017.02.23] Java8 函数式编程
查看>>