Spring与ibatis整合学习心得

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Spring与ibatis整合学习心得

梁飞虎首先,明确一下ibatis在此工程中的作用相当于hibernate,就是进行数据库的访问,也就是连接操作数据库用的。因此常说的SSH结构也可用SSI来取代,只是ibatis是一个轻量级的框架。

在spring.jar包中有org.springframework.orm.ibatis.SqlMapClientFactoryBean类,此类用于读取ibatis中的配置文件(总配置文件)sqlMapConfig.xml,具体的配置位置是在applicationContext.xml中:

标记1

class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">

WEB-INF/sqlMapConfig.xml

而sqlMapConfig.xml文件中包含ibatis的map文件信息,这点不再详述。SqlMapClientFactoryBean,这个class实现了两个interface:FactoryBean和InitializingBean,InitializingBean只有一个方法afterPropertiesSet()

spring调用构造函数后,发现它实现了InitializingBean接口,所以还会调用afterPropertiesSet来进一步初始化此class。

sqlMapClient 就是在这里面创建的。

至此一个完整的工厂创建完成。

FactoryBean接口主要方法就是public Object getObject();

要知道SqlMapClientFactoryBean是一个工厂类,他的作用就是你需要的时候调用它的一个方法,它就会返回你一个你需要的对象。

当然此处返回的就是一个sqlMapClient 对象。

所以这里的getObject实现就是把sqlMapClient 返回给调用者。

spring就是根据接口里的定义来调用getObject方法的,这样可以忽略到底是调用的那个对象的实例(也就是不关心调用的是哪个factory)。

也不关心返回的是什么对象,spring只知道调用了getObject就可以得到此factory所创建的对象就够了。标记2

class="com.cdc.capital.ibatis.dao.impl.ZjjyyxDaoImpl">

public class ZjjyyxDaoImpl extends SqlMapClientDaoSupport implements ZjjyyxDAO{

/**

*资金划转录入

*@param yxb

*@return int

*/

public int saveZjjyyx(ZjjyyxBean yxb){

return this.getSqlMapClientTemplate().update("insertZjjyyx", yxb);

}

}

SqlMapClientDaoSupport类有setSqlMapClient(SqlMapClient)方法,通过标记1 和标记2处的配置,再结合Spring的IOC功能,可以得知SqlMapClientFactoryBean读取的sqlMapConfig.xml文件的信息已经传递到了SqlMapClientDaoSupport中。所以,他调用自己的get…方法可以获得到和ibatis一样的SqlMapClient对象,从而能够连接操作数据库。

相关文档
最新文档