首页 > 代码库 > ibaits与spring整合的心得

ibaits与spring整合的心得

Ibatis2.3与spring3.0整合,其要明确一下,Ibatis与Hibernate一样都是dao层链接数据库用的框架。它是一个轻量级的orm框架,比Hibernate更加灵活。

sqlMapConfig是spring提供给它的核心类,它是线程安全的,是单例模式,其作用类似于Hibernate的SessionFactory类。该类的主要作用是读取ibatis的sqlMapConfig.xml文件,

标记1:

<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">

       <property name="configLocation">

           <value>WEB-INF/sqlMapConfig.xml</value>

       </property>

</bean>

 

而sqlMapConfig.xml是ibatis的总配置文件

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

 

<bean id="zjjyyxDao" class="com.cdc.capital.ibatis.dao.impl.ZjjyyxDaoImpl">

       <property name="dataSource">

           <ref bean="dataSource" />

       </property>

       <property name="sqlMapClient">

           <ref bean="sqlMapClient" />

       </property>