`

代码阅读_Spring的iBbatis支持

阅读更多

 

一、包结构

 

Spring2.5版本关于iBatis只有两个包

 

package org.springframework.orm.ibatis;

package org.springframework.orm.ibatis.support;

 

API对这两个包的介绍如下

 

1. Package org.springframework.orm.ibatis

 

Package providing integration of iBATIS Database Layer with Spring 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.

 

2Package org.springframework.orm.ibatis.support

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. 包简单说明(中文版)

 

aibatis包提供Spring方式的iBatis封装

 

SqlMapClientCallback接口二次封装SqlMapExecutor

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

 

SqlMapClientTemplate简化SqlMapClient操作

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

 

bibatis.support包提供ibatis辅助类

 

AbstractLobTypeHandler类是LobHandler的基类

BlobByteArrayTypeHandler处理Blob

BlobSerializableTypeHandler处理Blob

ClobStringTypeHandler处理Clob

 

SqlMapClientDaoSupport通常作为开发者DAO基类

 

二、简要分析

 1. 包下文件分析

 

##SqlMapClient

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

(含数据库相关)

 

 

aibatis

 

##SqlMapClientCallback

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

 

##SqlMapClientFactoryBean

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

 

##SqlMapClientTemplate

分离SqlMapClient和业务DAO代码

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

开发者一般调用这个

 

bibatis.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(SqlMapExecutor executor) throws SQLException;

 

##SqlMapClientOperations

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

 

##SqlMapClientTemplate

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

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

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

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

转换异常到Spring非受检异常

 

##SqlMapClientFactoryBean

负责建立SqlMapClient

afterPropertiesSet()负责建立SqlMapClient

辅助处理Ibatis配置文件加载

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

 

 

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

 

注意此包和DefaultLobHandlerDefaultLobHandler$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

 

 

 

 

分享到:
评论

相关推荐

    JavaEE源代码 Spring_Advices

    JavaEE源代码 Spring_AdvicesJavaEE源代码 Spring_AdvicesJavaEE源代码 Spring_AdvicesJavaEE源代码 Spring_AdvicesJavaEE源代码 Spring_AdvicesJavaEE源代码 Spring_AdvicesJavaEE源代码 Spring_AdvicesJavaEE源...

    基础框架代码_springcloud_repeatoj7_微服务基础框架代码_springcloud项目_

    本项目"基础框架代码_springcloud_repeatoj7_微服务基础框架代码_springcloud项目_",提供了一个通用的SpringCloud微服务框架搭建方案,旨在帮助开发者快速理解和构建自己的微服务应用。 首先,让我们深入了解...

    JavaEE源代码 Hibernate_Spring

    JavaEE源代码 Hibernate_SpringJavaEE源代码 Hibernate_SpringJavaEE源代码 Hibernate_SpringJavaEE源代码 Hibernate_SpringJavaEE源代码 Hibernate_SpringJavaEE源代码 Hibernate_SpringJavaEE源代码 Hibernate_...

    开发Spring MVC应用程序补充—程序源码下载.rar_spring_spring mvc_spring mvc 源码_sp

    标题中的"开发Spring MVC应用程序补充—程序源码下载.rar_spring_spring mvc_spring mvc 源码_sp"表明这是一个关于Spring MVC框架的开发教程,其中包含了源代码供学习者参考。Spring MVC是Spring框架的一个核心组件...

    Spring示例_Printer_Spring_AOP_Spring_Proxy

    在本示例中,"Spring示例_Printer_Spring_AOP_Spring_Proxy" 主要关注的是Spring框架中的核心概念,特别是AOP(面向切面编程)和代理模式的应用。让我们深入探讨这些知识点。 首先,Spring框架是Java开发中最常用的...

    [轻量级Java_EE企业应用实战_Struts2_Spring3_Hibernate整合开发

    此外,Spring3还提供了对JDBC、JPA、Hibernate等持久层技术的集成支持。 Hibernate是一个强大的ORM(对象关系映射)框架,它简化了数据库操作,允许开发者用Java对象的方式来操作数据库记录,而无需编写SQL语句。...

    spring-cloud-codegen__Spring Cloud代码生成器

    spring-cloud-codegen__Spring Cloud代码生成器

    SpringTest_springtest_spring_java_Framework_

    "SpringTest_springtest_spring_java_Framework_"这个标题暗示了我们讨论的是关于Spring框架的测试方面,可能是使用Spring进行单元测试或集成测试的一些实践。 描述中的“简单小应用,实现了一些基本的功能”可能是...

    JavaEE源代码 Spring_Pointcut

    JavaEE源代码 Spring_PointcutJavaEE源代码 Spring_PointcutJavaEE源代码 Spring_PointcutJavaEE源代码 Spring_PointcutJavaEE源代码 Spring_PointcutJavaEE源代码 Spring_PointcutJavaEE源代码 Spring_...

    springjdbc.zip_SpringJDBC_spring jdbc_spring 增删改查_springjdbc xml

    这个`springjdbc.zip`压缩包很可能包含了示例代码和配置文件,用于演示如何使用Spring JDBC来执行基本的数据库操作,如增、删、改、查。 1. **Spring JDBC模块**:Spring JDBC模块主要由`org.springframework.jdbc`...

    SpringJDBC.rar_jdbc spring_spring jd_spring jdbc_spring使用JDBC进行数

    1. **DataSource管理**:Spring支持各种类型的DataSource,如Apache Commons DBCP或C3P0,可以自动配置、管理数据库连接池,提高应用性能。 2. **JdbcTemplate**:这是Spring JDBC最常用的工具类,提供了大量的模板...

    Spring-Reference_zh_CN.rar_spring_spring 2.5_spring framework_sp

    《Spring Framework 2.5 开发参考手册》是Spring框架的重要文档,主要涵盖了Spring...通过阅读《Spring Framework 2.5 开发参考手册》,开发者可以深入理解Spring的各个方面,并熟练运用其功能来构建高效的企业级应用。

    尚学堂_Spring_0100_模拟Spring

    《尚学堂_Spring_0100_模拟Spring》 在深入探讨Spring框架之前,我们需要先理解Spring的核心理念。Spring是一个开源的Java平台,它主要为构建企业级应用提供了全面的编程和配置模型。它的核心特性是依赖注入...

    spring-boot-project.zip_angularjs_largefkb_spring_spring-boot_sp

    标题中的"spring-boot-project.zip_angularjs_largefkb_spring_spring-boot_sp"暗示这是一个包含Spring Boot、AngularJS以及可能的大型数据库应用的项目。描述简单地提到了"spring-boot,mybatis,angularjs",这意味...

    bbs.zip_Spring mvc bbs_hibernate bbs_spring mvc_spring mvc hiber

    开发者可以通过研究这些代码,了解Spring MVC和Hibernate在实际项目中的应用,以及如何将它们有效地集成在一起。对于想要学习或改进论坛系统的开发者来说,这是一个极好的学习资源。 总的来说,Spring MVC与...

    动力节点_王勇_JAVA视频教程_Spring001_Spring概述

    此外,Spring框架还包含了其他模块,如Spring MVC(用于构建Web应用)、Spring JDBC和MyBatis集成(简化数据库操作)、Spring ORM(支持Hibernate等ORM框架)、Spring AOP(实现切面编程)、Spring Test(支持单元...

    iBATIS_Spring_struts_demo.rar_DEMO_Struct spring ibatis_ibatis j

    文件“iBATIS_Spring_struts_demo”很可能是这个项目的源码包,包含了相关的配置文件、Java源代码和可能的资源文件。通过分析这个DEMO,开发者可以学习如何配置这些框架,理解它们如何协同工作,以及在实际项目中...

    FF.MSOL.SOA.rar_jpa hibernate_spring hibernate_spring mvc

    标题中的“FF.MSOL.SOA.rar_jpa hibernate_spring hibernate_spring mvc”表明这是一个关于Java企业级开发的资源包,其中涉及到的主要技术栈是JPA(Java Persistence API)、Hibernate、Spring以及Spring MVC。...

    01.Spring框架简介_spring_spring发展历程_

    2009年,Spring 3.0发布,全面支持Java EE 6,增加了对RESTful服务、Groovy的支持,并引入了Spring Expression Language (SpEL)。 2014年的Spring 4.0带来了对Java 8的全面支持,改进了对WebSocket和反应式编程的...

    SpringData视频教学

    1. 尚硅谷_SpringData_概述 2. 尚硅谷_SpringData_HelloWorld 3. 尚硅谷_SpringData_Repository接口 4. 尚硅谷_SpringData_Repository查询方法定义规范 5. 尚硅谷_SpringData_...12. 尚硅谷_SpringData_源代码和PPT

Global site tag (gtag.js) - Google Analytics