Chinaunix首页 | 论坛 | 博客
  • 博客访问: 483775
  • 博文数量: 1496
  • 博客积分: 79800
  • 博客等级: 大将
  • 技术积分: 9940
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-09 13:22
文章分类

全部博文(1496)

文章存档

2011年(1)

2008年(1495)

我的朋友

分类:

2008-09-09 17:11:20

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

    图1     

         在上图中,BaseDAO的setDataSource()和setSqlMapClient()方法实际上是分别调用了SqlMapClientTemplate类对象sqlMapClientTemplate的setDataSource()和setSqlMapClient()方法。其中setDataSource()方法是SqlMapClientTemplate类通过继承JdbcAccessor类获得。

 

        下面讲讲这一切是怎么和Spring整合到一起的。
          我们在spring的bean配置文件配置DAO,比如拿admPacVoucherDAO为例:    

         IbatisAdmPacVoucherDAO继承了BaseDAO类,对于继承来的属性,这里用parent="sqlMapClientDAO" 来获得。sqlMapClientDAO是另一个bean,这个bean就是BaseDAO的实例!也就是说,只要看看这个bean是怎么写的,就可以知道admPacVoucherDAO这个DAO怎么配置起来的。这一点可以从图一中看出来。
         我们找到sqlMapClientDAO的声明如下:
    
           
               
           
           
               
           
        

 

[1]  

【责编:landy】

--------------------next---------------------

阅读(89) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~