Spring与ibatis整合学习心得
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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">
而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对象,从而能够连接操作数据库。