2014-02-21 6 views

ответ

0

Вы можете переопределить базу данных при создании экземпляра экземпляра Ibatis; Я делаю это для переключения между версиями отладки и выпуска приложения и, следовательно, доступа к другой целевой базе данных.

Если файл XML находится в сборке под названием DatalayerAssembly, например, вы можете иметь метод для возвращения вашего нового экземпляра Ibatis на основе имени базы данных, как это:

public IBatisNet.DataMapper.ISqlMapper CreateNewIbatis(
    String serverName, 
    String databaseName) 
{ 
    // Load the config file (embedded resource in assembly). 
    System.Xml.XmlDocument xmlDoc = IBatisNet.Common.Utilities.Resources.GetEmbeddedResourceAsXmlDocument("SqlMapConfig.xml, DatalayerAssembly"); 

    // Overwrite the connectionString in the XmlDocument, hence changing database. 
    // NB if your connection string needs extra parameters, 
    // such as `Integrated Security=SSPI;` for user authentication, 
    // then append that to InnerText too. 
    xmlDoc["sqlMapConfig"]["database"]["dataSource"] 
     .Attributes["connectionString"] 
     .InnerText = "Server=" + serverName + ";Database=" + databaseName; 

    // Instantiate Ibatis mapper using the XmlDocument via a Builder, 
    // instead of Ibatis using the config file. 
    IBatisNet.DataMapper.Configuration.DomSqlMapBuilder builder = new IBatisNet.DataMapper.Configuration.DomSqlMapBuilder(); 
    IBatisNet.DataMapper.ISqlMapper ibatisInstance = builder.Configure(xmlDoc); 

    // Now use the ISqlMapper instance ("ibatisInstance") as normal. 
    return ibatisInstance; 
} 

Я использую этот подход в Ibatis 1.6.2.0 на .Net, но точный конфигурационный файл SqlMap может варьироваться в зависимости от версии. В любом случае подход один и тот же; вам может понадобиться другой путь Xml (т. е. бит, который читает ["sqlMapConfig"]["database"] и т. д., возможно, потребуется изменить для вашего конфигурационного файла)

Надеюсь, что это поможет.