电话:0731-83595998
导航

关于iBatis和Spring的整合

来源: 2017-12-19 16:12

   在使用iBatis的sqlmap时,总是有些疑惑,DAO是怎么找到sqlmap的配置文件的呢,DAO是怎么获得数据库的配置信息的呢,这些又是怎么和Spring整合在一起的呢?带着这些疑问,鄙人试图通过对某个项目的代码分析,来理清这些头绪。

  当我们书写一个DAO实现类时,首先implement一个DAO接口。然后继承BaseDAO类。这个类对Spring的DaoSupport类作了扩展,提供了两个重要的方法setDataSource()和setSqlMapClient()。setDataSource()方法用来设置数据源,从而确定数据库配置信息。而setSqlMapClient()用来设置SqlMapClient,就是SqlMapClient确定了sqlmap的配置。其整个静态结构如下图所示:

  在上图中,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的声明

  

  

  

  

  

  

  

  |||   果然,其中有sqlMapClient和dataSource属性。好!继续追下去,我们看看sqlMapClient这个bean的声明:

  

  counter/persistence/counter-sqlmap.xml

  

  

  哈哈,找到sqlmap配置文件在哪里指定了,就是这里。configLocation指定了配置文件的位置。打开看看果然是各个sqlmap的配置

  

  

  

  

  

   。。。。。。。。。。。。

  可是再看看sqlMapClient这个bean的类型,疑惑又来了。这个bean根本不是SqlMapClient类的实例,甚至似乎和SqlMapClient没有任何联系。这个bean的类型是SqlMapClientFactoryBean。原来这是一个工厂类,这个类负责组装SqlMapClient类的实例。这个类有getObject()和getObjectType()方法。getObject()返回的就是SqlMapClient类的实例,而getObjectType()方法返回SqlMapClient类。这种工厂方法很有意思,笔者会在以后对种方式作深入研究。

  当我通过spring的IoC获得DAO的bean,并执行其中一个方法,比如

  publicintgetDebitCountByVoucherId(LongvoucherId){

  Integercount=(Integer) this.getSqlMapClientTemplate().queryForObject(

  "MS-PAC-VOUCHER-DEBIT-COUNT-BY-VOUCHERID",voucherId);

  returncount.intValue(); }

  实际是获得SqlMapClientTemplate类对象,并执行其中的方法。而通过上文可以得知,SqlMapClientTemplate类对象通过获得的sqlMapClient就可以得到所有sqlmap的配置。考试吧Oracle站编辑整理

 

编辑推荐:

下载Word文档

温馨提示:因考试政策、内容不断变化与调整,长理培训网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准! (责任编辑:长理培训)

网络课程 新人注册送三重礼

已有 22658 名学员学习以下课程通过考试

网友评论(共0条评论)

请自觉遵守互联网相关政策法规,评论内容只代表网友观点!

最新评论

点击加载更多评论>>

精品课程

更多
10781人学习

免费试听更多

相关推荐
图书更多+
  • 电网书籍
  • 财会书籍
  • 其它工学书籍
拼团课程更多+
  • 电气拼团课程
  • 财会拼团课程
  • 其它工学拼团
热门排行

长理培训客户端 资讯,试题,视频一手掌握

去 App Store 免费下载 iOS 客户端