首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

代码翻阅_Spring的iBbatis支持

2012-08-17 
代码阅读_Spring的iBbatis支持?一、包结构package org.springframework.orm.ibatis ?Package providing in

代码阅读_Spring的iBbatis支持

?

一、包结构

package org.springframework.orm.ibatis;

?

Package providing integration of?iBATISDatabase Layer?withSpring concepts.

?

Interface Summary

SqlMapClientCallback

Callback interface for data access code that works with the iBATIS?SqlMapExecutor?interface.

SqlMapClientOperations

Interface that specifies a basic set of iBATIS SqlMapClient operations, implemented by?SqlMapClientTemplate.

?

Class Summary

SqlMapClientFactoryBean

FactoryBean?that creates an iBATIS?SqlMapClient.

SqlMapClientTemplate

Helper class that simplifies data access via the iBATIS?SqlMapClient?API, converting checked SQLExceptions into unchecked DataAccessExceptions, following the?org.springframework.dao?exception hierarchy.

Classes supporting the?org.springframework.orm.ibatis?package.

?

Class Summary

AbstractLobTypeHandler

Abstract base class for iBATIS TypeHandler implementations that map to LOBs.

BlobByteArrayTypeHandler

iBATIS TypeHandler implementation for byte arrays that get mapped to BLOBs.

BlobSerializableTypeHandler

iBATIS TypeHandler implementation for arbitrary objects that get serialized to BLOBs.

ClobStringTypeHandler

iBATIS TypeHandler implementation for Strings that get mapped to CLOBs.

SqlMapClientDaoSupport

Convenient super class for iBATIS SqlMapClient data access objects.

?

3.?包简单说明(中文版)

?

a)ibatis包提供Spring方式的iBatis封装

?

SqlMapClientCallback接口二次封装SqlMapExecutor

SqlMapClientOperations接口定义了SqlMapClient可进行的操作

?

SqlMapClientTemplate简化SqlMapClient操作

SqlMapClientFactoryBean类提供生成SqlMapClient的工厂方法

?

b)ibatis.support包提供ibatis辅助类

?

AbstractLobTypeHandler类是LobHandler的基类

BlobByteArrayTypeHandler处理Blob

BlobSerializableTypeHandler处理Blob

ClobStringTypeHandler处理Clob

?

SqlMapClientDaoSupport通常作为开发者DAO基类

?

二、简要分析

?1.?包下文件分析

?

##SqlMapClient

维护SqlMaps配置文件得到的sql伪脚本数据结构

(含数据库相关)

?

?

a)ibatis包

?

##SqlMapClientCallback

实现类处理自定义业务相关DAO处理(不负责数据库连接)

?

##SqlMapClientFactoryBean

提供生成SqlMapClient的工厂方法(从配置文件生成)

?

##SqlMapClientTemplate

分离SqlMapClient和业务DAO代码

简单来说就是分离取DB连接和基本操作(增删改查)

开发者一般调用这个

?

b)ibatis.support包

?

##XXXLobTypeHandler

处理Xlob

?

##SqlMapClientDaoSupport

对SqlMapClientTemplate封装

通常作为开发人员的DAO基类

?

2.?简单总结

?

a)关系分析

?

SqlMapClientFactoryBean可以生成SqlMapClient,

然后这个SqlMapClient通常放进SqlMapClientTemplate,

这个SqlMapClientTemplate一般再放入SqlMapClientDaoSupport作为开发人员的DAO基类。

?

b)开发人员关注点

?

DAO一般继承SqlMapClientDaoSupport

然后从SqlMapClientDaoSupport取出SqlMapClient传伪SQL脚本ID即可操作数据库。

?

三、代码阅读笔记

?

#####org.springframework.orm.ibatis

?

##SqlMapClientCallback

回调(业务逻辑相关操作)(连接无关)

Object doInSqlMapClient(SqlMapExecutorexecutor) throws SQLException;

?

##SqlMapClientOperations

常用操作行为(增删改查)

?

##SqlMapClientTemplate

预定义DAO方法(增删改查)

分离了数据库连接和数据库操作

核心方法是execute()(模板方法)(连接相关)

api式方法queryForXXX()(业务相关)(连接无关)(调用execute获取连接)

转换异常到Spring非受检异常

?

##SqlMapClientFactoryBean

负责建立SqlMapClient

afterPropertiesSet()负责建立SqlMapClient

辅助处理Ibatis配置文件加载

辅助处理数据连接(含事物)

?

?

#####org.springframework.orm.ibatis.support

?

注意此包和DefaultLobHandler及DefaultLobHandler$DefaultLobCreator有关联

DefaultLobHandler规范了Lob统一操作方式

?

##AbstractLobTypeHandler

提供存取Lob对象的模板方法

关键的setParameterInternal/getResultInternal子类负责

利用了LobHandler成员

LobCreatorSynchronization貌似处理Lob资源生成释放相关

?

##BlobByteArrayTypeHandler

实质是lobCreator.setBlobAsBytes/lobHandler.getBlobAsBytes

?

##BlobSerializableTypeHandler

实质是lobCreator.setBlobAsBytes/lobHandler.getBlobAsBytes

和ObjectInputStream/ObjectOutputStream相关的序列化处理

?

##ClobStringTypeHandler

实质是lobCreator.setBlobAsBytes/lobHandler.getBlobAsBytes

?

##SqlMapClientDaoSupport

支持SqlMapClientTemplate封装的SqlMapClientDao

可做DAO父类

貌似可享受SQLExceptionTranslator

?

?

?

?

热点排行