`
maplye
  • 浏览: 114644 次
  • 来自: ...
社区版块
存档分类
最新评论

IBatis.Net如何支持多个数据库

阅读更多
原文:http://www.maplye.com:8081/post/114/

在Ibatis.net的帮助文档中有介绍多数据库支持,但是没有写全代码,后来查看其源码,并结合帮助文档,找到了解决方法,其实道理就是另行实现一个Mapper.如AnthorMapper:
Apache Notice#region Apache Notice    
/**//*****************************************************************************   
 * $Header: $   
 * $Revision: 513429 $   
 * $Date: 2007-03-02 02:32:25 +0800 (星期五, 02 三月 2007) $   
 *    
 * iBATIS.NET Data Mapper   
 * Copyright (C) 2004 - Gilles Bayon   
 *     
 *    
 * Licensed under the Apache License, Version 2.0 (the "License");   
 * you may not use this file except in compliance with the License.   
 * You may obtain a copy of the License at   
 *    
 *      
http://www.apache.org/licenses/LICENSE-2.0   
 *    
 * Unless required by applicable law or agreed to in writing, software   
 * distributed under the License is distributed on an "AS IS" BASIS,   
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   
 * See the License for the specific language governing permissions and   
 * limitations under the License.   
 *    
 *******************************************************************************
*/
  
#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>   
接下来就可以使用AntherMapper来创建ISqlMapper了。如下:
public IList<Weather> GetWeather()    
{    
     ISqlMapper map 
= AnthorMapper.Instance();    
   
     
return map.QueryForList<Weather>("Weather.Select"null);    
}
 

分享到:
评论

相关推荐

    ibatis.net winform搭建带数据库

    标题 "ibatis.net winform搭建带数据库" 描述了一个使用iBATIS.NET框架在Windows Forms(WinForm)应用程序中构建数据库交互的过程。iBATIS.NET是.NET平台上的一个持久层框架,它允许开发者将SQL语句与应用程序代码...

    IBatis.net 配置各种数据库

    IBatis.net的优势之一是其良好的扩展性和多数据库支持。只需更改SqlMapConfig.xml中的配置,就可以轻松切换到其他数据库,如Oracle、SQL Server等。只需更换相应的数据库提供者,并调整连接字符串即可。 总结,...

    Ibatis.net学习例子以及使用教程书

    6. **存储过程的支持**:除了普通的SQL语句,Ibatis.net还支持调用数据库的存储过程,方便进行复杂的数据操作。 在实际应用中,你将学习如何创建和配置SqlMapConfig.xml文件,定义SQL映射文件,以及如何在.NET代码...

    ibatis.Net

    7. **事务管理**:Ibatis.Net提供了对数据库事务的支持,你可以选择手动管理事务或者让Ibatis.Net自动处理,这在多表操作和数据一致性维护中非常重要。 8. **扩展性**:Ibatis.Net的设计使得它易于与其他框架集成,...

    ibatis.net

    “MyBatis 3 User Guide Simplified Chinese.pdf”虽然名义上是关于MyBatis(Java版)的用户指南,但很多原理和概念对于理解Ibatis.Net也是适用的,因为两者都基于相同的ORM(对象关系映射)思想。它可能包含关于...

    IBatis.net1.9.2&1.6.2最新版本

    **IBatis.net 1.9.2 & 1.6.2:数据库持久化框架的里程碑** IBatis 是一个流行的数据访问层(DAL)框架,它允许开发者将SQL语句与.NET应用程序中的业务逻辑分离。在.NET环境中,有两个主要版本被广泛使用:IBatis...

    IBatis.Net流风通用管理框架源码.rar

    IBatis.Net是一个轻量级的持久层框架,它提供了数据库访问的映射功能,帮助开发者将SQL语句与业务逻辑分离,实现数据访问层的解耦。 【描述】描述中提到的"IBatis.Net流风通用管理框架源码"意味着这是一个包含了...

    IBatis.net-IBatis.DataAccess.1.9.2/IBatis.DataMapper.1.6.2

    3. **事务支持**:与IBatis.DataMapper协同工作,提供了高级的事务控制功能,可以跨越多个数据库操作。 4. **性能优化**:通过延迟加载(Lazy Loading)和预加载(Eager Loading)策略,优化数据加载性能。 5. **...

    iBATIS.NET - DataMapper Application Framework

    这些文件包含SQLMap元素,每个元素代表一个数据库表,其中包含多个SQL语句和对应的ResultMap元素,用于描述如何将查询结果转换为对象。 3. **动态SQL**: iBATIS.NET支持在XML配置文件中编写动态SQL,允许根据特定...

    asp.net MVC3 IBATIS.NET 实例

    接着,IBATIS.NET是一个轻量级的持久层框架,它将SQL语句与业务逻辑分离,使数据库访问更加灵活。它允许开发者直接写SQL,避免了ORM框架可能导致的性能问题。在IBATIS.NET中,数据访问通过配置XML映射文件或使用注解...

    Ibatis.Net 的Ibatis.Net.Domain和IBatisNet.Common组件

    通过Ibatis.Net.Domain,业务对象可以直接与数据库进行交互,而IBatisNet.Common则提供了底层的SQL执行和映射支持。这种分离关注点的设计模式使得代码更易于维护,也更利于团队协作。 总结起来,Ibatis.Net框架通过...

    iBatis.Net 入门例子,类似于 HelloWorld

    每个SqlMap对应一个数据库表或者视图,包含了多个SQL映射(Statement)。在SqlMapConfig.xml中引用的SqlMap文件,如`IBatisNetWellhope2010.SqlMap.xml`,就是具体的SqlMap实例。 3. **SQL映射(Statement)**:在...

    换个资源分。上传iBatis.net学习手记

    iBatis.NET 是一款流行的持久层框架,它允许开发者将SQL语句与.NET代码分离,提供了灵活的数据库访问机制。这个框架并非完全的ORM(对象关系映射)解决方案,但它确实实现了部分ORM的功能,允许开发者自定义SQL,以...

    Ibatis.net

    4. **动态SQL**:Ibatis.net支持动态SQL,这意味着可以在映射文件中根据条件动态生成SQL语句。例如,使用`&lt;if&gt;`、`&lt;choose&gt;`、`&lt;when&gt;`、`&lt;otherwise&gt;`等标签可以实现条件判断,`&lt;where&gt;`用于构建WHERE子句,`...

    Ibatis.net写的办公工具借出归还统计系统

    在本项目中,"Ibatis.net写的办公工具借出归还统计系统"利用了Ibatis.net的优势,构建了一个专门用于管理办公工具借用和归还情况的统计系统。该系统能够帮助公司或组织跟踪谁借用了哪些工具,何时借用,以及何时归还...

    iBatis.net总结 使用帮助

    - **settings**:包含了多个设置,如useStatementNamespaces控制是否需要命名空间,cacheModelsEnabled决定是否启用缓存,validateSqlMap控制是否验证映射文件。 - **providers**:配置数据驱动提供类的位置。 - ...

    IBATIS.NET 学习文档

    ***可以被视为.NET版的iBATIS框架,后者是一个流行的Java持久层框架。***通过一种简单的映射机制,可以将数据访问对象(DAO)映射到SQL语句上,便于管理和维护。 文档中提到的“Data Access Objects Developer ...

Global site tag (gtag.js) - Google Analytics