最近作项目,需要使用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> 然后,在一个Service文件中(调用Dao的地方),如下写代码: 因为已经在doa.config 文件中默认指定的是Oracle数据库,所以我们这里需要指定dao.config文件中的AccessMapDao 的context配置属性。 OK,到此我们就已经成功地配置好了iBATISNet同时支持多个数据库的功能。 |