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