ibatis2.3.4.726架构类图

只是一个图片,下面有用powerdesign画的原件


1:SqlMapClient为单例对象。客户端每次请求, SqlMapClient都要生成一个SqlMapSession对象的一个实例。在生成SqlMapSession实例过程中,SqlMapSession通过构造函数参数引用SqlMapClient单例对象,这样形成多个SqlMapSession都引用同一个SqlMapClient

2:SqlMapSession实例通过引用SqlMapClient获取了SqlMapExecutorDelegate单例对象,同时使用这个SqlMapExecutorDelegate对象构造出了另一个轻量级对象实例SessionScope,这样形成一个SqlMapSession对应一个SessionScope

3:SqlMapExecutorDelegate为单例对象,这是一个底层核心的类,客户端的所有的请求操作最终将委托给这个类相应的方法去执行。注意这个类没有实现任何有关操作的客户端接口,但里面却包含了所有的客户端操作对应的调用方法。这个类组合了ibatis核心类:
    mappedStatements = new HashMap();//用于运行时statement映射
    cacheModels = new HashMap();//缓存映射
    resultMaps = new HashMap();//结果集映射
    parameterMaps = new HashMap();//运行时参数映射

    sqlExecutor = new SqlExecutor();//最底层真正的操作方法
    typeHandlerFactory = new TypeHandlerFactory();//返回result映射使用
    //在参数和返回结果的映射中进行数据转换
    dataExchangeFactory = new DataExchangeFactory(typeHandlerFactory);

猜你喜欢

转载自sd-zyl.iteye.com/blog/1743549