专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Java教程 » ibatis:iBatis和Spring的整合方法 »正文

ibatis:iBatis和Spring的整合方法

来源: 发布时间:星期四, 2009年2月12日 浏览:268次 评论:0


在使用iBatissqlmap时总是有些疑惑DAO是如何找到sqlmap配置文件DAO是如何获得数据库配置信息这些又是如何和Spring整合在呢?带着这些疑问鄙人试图通过对某个项目代码分析来理清这些头绪
当我们书写个DAO实现类时首先implement个DAO接口然后继承BaseDAO类这个类对SpringDaoSupport类作了扩展提供了两个重要思路方法DataSourceSqlMapClientDataSource思路方法用来设置数据源从而确定数据库配置信息SqlMapClient用来设置SqlMapClient就是SqlMapClient确定了sqlmap配置其整个静态结构如下图所示:


图1
在上图中BaseDAODataSourceSqlMapClient思路方法实际上是分别了SqlMapClientTemplate类对象sqlMapClientTemplateDataSourceSqlMapClient思路方法其中DataSource思路方法是SqlMapClientTemplate类通过继承JdbcAccessor类获得




下面讲讲这切是如何和Spring整合到
我们在springbean配置文件配置DAO比如拿admPacVoucherDAO为例:
<beanid="admPacVoucherDAO"="com.counter.biz.dal.ibatis.IbatisAdmPacVoucherDAO"parent="sqlMapClientDAO"/>

IbatisAdmPacVoucherDAO继承了BaseDAO类对于继承来属性这里用parent="sqlMapClientDAO" 来获得sqlMapClientDAO是另个bean这个bean就是BaseDAO例子!也就是说只要看看这个bean是如何写就可以知道admPacVoucherDAO这个DAO如何配置起来点可以从图中看出来
我们找到sqlMapClientDAO声明如下:
<beanid="sqlMapClientDAO"="com.counter.biz.dal.BaseDAO">
<propertyname="sqlMapClient">
<refbean="sqlMapClient"/>
</property>
<propertyname="dataSource">
<refbean="dataSource"/>
</property>
</bean>

果然其中有sqlMapClient和dataSource属性好!继续追下去我们看看sqlMapClient这个bean声明:
<beanid="sqlMapClient"
="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<propertyname="configLocation">
<value>counter/persistence/counter-sqlmap.xml</value>
</property>
</bean>

哈哈找到sqlmap配置文件在哪里指定了就是这里configLocation指定了配置文件位置打开看看果然是各个sqlmap配置:
<?xmlversion="1.0"encoding="GB2312"?>
<!DOCTYPEsqlMapConfigPUBLIC"-//iBATIS.com//DTD SQL Map Config 2.0//EN""http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<tingscacheModelsEnabled="true"enhancementEnabled=
"false"lazyLoadingEnabled="false"maxRequests="3000"maxSessions=
"3000"maxTransactions="3000"useStatementNamespaces="false"/>
<sqlMapresource="counter/sqlmap/pacioli-sql-mapping.xml"/>
<sqlMapresource="counter/sqlmap/common-sqlmap-mapping.xml"/>


<sqlMapresource="com/counter/biz/dal/sqlmap/PacVoucherDebitInfo-sqlmap-mapping.xml"/>
<sqlMapresource="com/counter/biz/dal/sqlmap/PacVoucherExt-sqlmap-mapping.xml"/>
</sqlMapConfig>

可是再看看sqlMapClient这个bean类型疑惑又来了这个bean根本不是SqlMapClient类例子甚至似乎和SqlMapClient没有任何联系这个bean类型是SqlMapClientFactoryBean原来这是个工厂类这个类负责组装SqlMapClient类例子这个类有getObject和getObjectType思路方法getObject返回就是SqlMapClient类例子而getObjectType思路方法返回SqlMapClient类这种工厂思路方法很有意思笔者会在以后对种方式作深入研究
当我通过springIoC获得DAObean并执行其中个思路方法比如:
publicgetDebitCountByVoucherId(LongvoucherId){
Integercount=(Integer)
this.getSqlMapClientTemplate.queryForObject(
"MS-PAC-VOUCHER-DEBIT-COUNT-BY-VOUCHERID",voucherId);
count.Value;
}

实际是获得SqlMapClientTemplate类对象并执行其中思路方法而通过上文可以得知SqlMapClientTemplate类对象通过获得sqlMapClient就可以得到所有sqlmap配置

标签:ibatis教程 ibatis
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: