谈到iBATIS.NET多数据库支持我们首先来看看它本身的帮助文档,在iBATIS.NET的帮助文档中有介绍多数据库支持,但是没有写全代码,后来查看其源码,并结合帮助文档,找到了解决方法,其实道理就是另行实现一个Mapper.
iBATIS.NET多数据库支持实例如AnthorMapper:
- Apache Notice#region Apache Notice
- #endregion
- using IBatisNet.Common.Utilities;
- using IBatisNet.DataMapper;
- using IBatisNet.DataMapper.Configuration;
- namespace IBatisNet.DataMapper
- {
- /**//// ﹤summary﹥
- /// A singleton class to access the default SqlMapper defined by the SqlMap.Config
- /// ﹤/summary﹥
- public sealed class AnthorMapper
- {
- Fields#region Fields
- private static volatile ISqlMapper _mapper = null;
- #endregion
- /**//// ﹤summary﹥
- ///
- /// ﹤/summary﹥
- /// ﹤param name="obj">﹤/param﹥
- public static void Configure (object obj)
- {
- _mapper = null;
- }
- /**//// ﹤summary﹥
- /// Init the 'default' SqlMapper defined by the SqlMap.Config file.
- /// ﹤/summary﹥
- public static void InitMapper()
- {
- ConfigureHandler handler = new ConfigureHandler (Configure);
- DomSqlMapBuilder builder = new DomSqlMapBuilder();
- _mapper = builder.ConfigureAndWatch ("AnthorMap.config",handler); }
- /**//// ﹤summary﹥
- /// Get the instance of the SqlMapper defined by the SqlMap.Config file.
- /// ﹤/summary﹥
- /// ﹤returns>A SqlMapper initalized via the SqlMap.Config file.﹤/returns﹥
- public static ISqlMapper Instance()
- {
- if (_mapper == null)
- {
- lock (typeof (SqlMapper))
- {
- if (_mapper == null) // double-check
- {
- InitMapper();
- }
- }
- }
- return _mapper;
- }
- /**//// ﹤summary﹥
- /// Get the instance of the SqlMapper defined by the SqlMap.Config file. (Convenience form of Instance method.)
- /// ﹤/summary﹥
- /// ﹤returns>A SqlMapper initalized via the SqlMap.Config file.﹤/returns﹥
- public static ISqlMapper Get()
- {
- return Instance();
- }
- }
- }
以上代码只是修改了iBATIS.NET中的Mapper的代码,将_mapper = builder.ConfigureAndWatch (handler);修改为_mapper = builder.ConfigureAndWatch ("AnthorMap.config",handler),就是根据另一个AnthorMap.config文件来生成SqlMapper。
AnthorMap.config和默认的SqlMap.config一样,只是根据你的数据不同设置不同而已,测试AnthorMap.config如下如下:
- ﹤?xml version="1.0" encoding="utf-8"?﹥
- ﹤sqlMapConfig
- xmlns="http://ibatis.apache.org/dataMapper"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"﹥
- ﹤settings﹥
- ﹤setting useStatementNamespaces="true"/﹥
- ﹤/settings﹥
- ﹤providers resource="ServerConfig/providers.config"/﹥
- ﹤!-- Database connection information --﹥
- ﹤database﹥
- ﹤provider name="sqlServer2.0"/﹥
- ﹤dataSource name="CrmSystem" connectionString="server=.;database=TestDB;uid=sa;pwd="/﹥
- ﹤/database﹥
- ﹤sqlMaps﹥
- ﹤sqlMap embedded="Test.Domain.Weather.xml,Test.Domain" /﹥
- ﹤/sqlMaps﹥
- ﹤/sqlMapConfig﹥
iBATIS.NET多数据库支持之使用AntherMapper来创建ISqlMapper了。如下:
- public IList﹤Weather﹥GetWeather()
- {
- ISqlMapper map = AnthorMapper.Instance();
- return map.QueryForList﹤Weather>("Weather.Select", null);
- }
那么iBATIS.NET多数据库支持就介绍到这里,希望这样的介绍对你有帮助。
【编辑推荐】