让iBatisNet同时使用多个数据库

最近作项目,需要使用iBatisNet框架,但是数据库需要同时使用Oracle和Access,在网上查了很多文章都没有相关介绍。经过有一天的摸索(分析源码,测试),终于明白了。
首先,修改dao.config文件,下面是例子:
<?xml version="1.0" encoding="utf-8"?>
<daoConfig xmlns="http://ibatis.apache.org/dataAccess" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<providers resource="providers.config"/>
<context id="SqlMapDao" default="true">
<!-- ==== Sql Server : SqlClient configuration ========= -->
<database>
<provider name="oracleClient1.0" />
<dataSource name="Oracle" connectionString="User ID=gis;Password=gis;Data Source=gis;" />
</database>
<daoSessionHandler id="SqlMap">
<property name="resource" value="SqlMap.config" />
</daoSessionHandler>
<daoFactory>
<dao interface="XXBLL.Persistence.Interfaces.IQListItemDao, XXBLL"
implementation="XXBLL.Persistence.MapperDao.QListItemSqlMapDao, XXBLL" />
<dao interface="XXBLL.Persistence.Interfaces.IRoomInfoDao, XXBLL"
implementation="XXBLL.Persistence.MapperDao.RoomInfoSqlMapDao, XXBLL" />
</daoFactory>
</context>
<context id="AccessMapDao" default="false">
<!-- ==== Access : OleDb configuration
必须设置 providers.config 中 的 OleDb2.0 enable="true"
========= -->
<database>
<provider name="OleDb2.0" />
<dataSource name="Access" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:/test/XXQuery/App_Data/Test.mdb;" />
</database>
<!--
daoSessionHandler 默认 id=SqlMap
如果要指定不同的DataAccessHandlers,那么需要定义 daoSessionHandlers 配置节。
-->
<daoSessionHandler id="SqlMap">
<property name="resource" value="SqlMap.config" />
<!-- <property name="resource" value="SqlMap.config" /> -->
</daoSessionHandler>
<daoFactory>
<dao interface="XXBLL.Persistence.Interfaces.IOAClassDao, XXBLL"
implementation="XXBLL.Persistence.MapperDao.OAClassAccessDao, XXBLL" />
</daoFactory>

</context>
<!--
<daoSessionHandlers id="SqlMap1">
<handler id="SqlMap1" implementation="IBatisNet.DataAccess.DaoSessionHandlers.SqlMapDaoSessionHandler, SqlMapDaoSessionHandler" default="false">
</handler>
</daoSessionHandlers>
-->
</daoConfig>

然后,在一个Service文件中(调用Dao的地方),如下写代码:
//使用不同的doa.config context;
IDaoManager daoManager = ServiceConfig.GetInstance().GetDaoManager("AccessMapDao");
IOAClassDao oaClassDao = daoManager.GetDao(typeof(IOAClassDao)) as IOAClassDao;
return oaClassDao.GetOAClassList();

因为已经在doa.config 文件中默认指定的是Oracle数据库,所以我们这里需要指定dao.config文件中的AccessMapDao 的context配置属性。

OK,到此我们就已经成功地配置好了iBATISNet同时支持多个数据库的功能。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值