ibatis源码浅析- 初探

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 类图

  

posted on 2012-06-10 10:53  YangJin  阅读(164)  评论(0编辑  收藏  举报