ibatis.net 实现多数据库配置

1.1  功能介绍

使用ibatis.net ORM框架时,有时候需要操作多个数据库,同时有时候也需要对连接数据库信息进行加密,本文通过将配置连接写到Web.config中,

这样就可以在Web.config中加密,在读取的地方再解密使用。

下面是具体的配置方法,有更好方法的也欢迎指出, 对于ibatis.net 使用基础知识,请参照其他资料

1.2 配置流程

(1)先配置sqlmap.config中database结点,随便设置一个值,后面会重新设置这个连接值

<database>
    <provider name="sqlServer2005"/>
    <!--先随便设置一个假连接,后面会重新赋值-->
    <dataSource name="iBatisNet" connectionString="data source=11;database=11;user id=11;password=11;connection reset=false;connection lifetime=5; min pool size=1; max pool size=50"/>
  </database>

(2)创建2个操作SqlMap的实体类(我这里分主库、中间库2个数据库)

 //用于操作主库
    public class BaseDao
    {
     public static readonly BaseDao Instance = new BaseDao();
private static ISqlMapper sqlMap;

        /// <summary>
        ///
        /// </summary>
        public BaseDao()
        {
            try
            {
                //加载当前所在的程序集
                string sAssembly = this.GetType().Assembly.GetName().Name;
                Assembly assembly = Assembly.Load(sAssembly);
                string sqlMapPath = sAssembly + ".Config.sqlmap.config";
                Stream stream = assembly.GetManifestResourceStream(sqlMapPath);
                DomSqlMapBuilder builder = new DomSqlMapBuilder();
                sqlMap = builder.Configure(stream);
                //读取数据库连接串,设置为自定义字符串(如果加密,则需要先解密)
                string connString = System.Configuration.ConfigurationManager.AppSettings["MasterDB"];
                sqlMap.DataSource.ConnectionString = connString;
            }
            catch (System.Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// 供外层使用的数据操作对象
        /// </summary>
        public ISqlMapper SqlMap
        {
            get
            {
                return sqlMap;
            }
        }

    }
public class MiddleBaseDao
    {
        public static readonly MiddleBaseDao Instance = new MiddleBaseDao();

        private static ISqlMapper sqlMap;

        public MiddleBaseDao()
        {
            try
            {
                //加载当前所在的程序集
                string sAssembly = this.GetType().Assembly.GetName().Name;
                Assembly assembly = Assembly.Load(sAssembly);
                //加载sqlmap.config
                string sqlMapPath = sAssembly + ".Config.sqlmap.config";
                Stream stream = assembly.GetManifestResourceStream(sqlMapPath);
                DomSqlMapBuilder builder = new DomSqlMapBuilder();
                sqlMap = builder.Configure(stream);
                //读取数据库连接串,设置为自定义字符串(操作中间库)
                string connString = System.Configuration.ConfigurationManager.AppSettings["MiddleDB"];
                sqlMap.DataSource.ConnectionString = connString;
            }
            catch (System.Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// 供外层使用的数据操作对象
        /// </summary>
        public ISqlMapper SqlMap
        {
            get
            {
                return sqlMap;
            }
        }

    }

(3)使用的时候就可以根据不同的数据库操作,调用不同的SqlMap类

public IList<DmsSysPost> FindByCondExt(DmsSysPost obj) {
            return BaseDao.Instance.SqlMap.QueryForList<DmsSysPost>("DmsSysPost_FindByCondExt", obj);
        }
public IList<DmsSysPost> FindByCondExt(DmsSysPost obj) {
            return MiddleBaseDao.Instance.SqlMap.QueryForList<DmsSysPost>("DmsSysPost_FindByCondExt", obj);
        }

(4)最后在Web.config中配置一下2个连接串即可,到此配置完成

<appSettings>
    <!--主数据库(可以加密)-->
    <add key="MasterDB" value="data source=.;database=MasterDB;user id=;password="/>
    <!--中间库-->
    <add key="MiddleDB" value="data source=.;database=MiddleDB;user id=;password="/>
  </appSettings>

1.3  参考资料

http://blog.csdn.net/isprotect/article/details/8806974

时间: 2024-10-09 04:47:23

ibatis.net 实现多数据库配置的相关文章

iBATIS的多对多 数据库设计及实现

iBATIS的多对多映射配置方法和多对一映射配置方法差不多,不同的是,多对多映射,数据库设计上需要一个记录两个类关系的中间表,本文以学生-老师为例,在iBATIS的sqlmap中配置多对多关系. iBATIS的多对多映射配置1,建表.数据库中三个表,分别为: 1 CREATE TABLE [student] ( 2 [id] [int] IDENTITY (1, 1) NOT NULL , 3 [name] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NO

Spring+MyBatis双数据库配置

Spring+MyBatis双数据库配置 近期项目中遇到要调用其它数据库的情况.本来仅仅使用一个MySQL数据库.但随着项目内容越来越多,逻辑越来越复杂. 原来一个数据库已经不够用了,须要分库分表.所以决定扩充数据库,正好Spring能够灵活的扩充数据库.以下简单写一篇博文,记录下多数据库配置的过程. 1.项目结构例如以下图: 当中mkhl和ulab分别相应两个数据库模块.同一时候也相应两个不同的功能模块. 2.整个Maven项目的配置文件:pom.xml <project xmlns="

PLSQL Develope连接oracle数据库配置

首先我们在讲PLSQL Develope连接oracle数据库配置之前,先讲下如果不用PLSQL Develope连接oracle数据库,那该怎么办,那就是在本机安装oracle数据库,不过这个对于配置渣的笔记本来说是个挑战,而且界面长时间不操作就会卡死,只能强制关闭,用起来非常不方便,如果笔记本配置高,且不想费力用PLSQL,那可以考虑直接安装oracle客户端. 下面我们来看看如何用PLSQ连接oracle. 1.自行百度下载plsql客户端,个人比较喜欢从CSDN上下载,你们随意.下载好后

Castle连接多数据库配置

ActiveRecord 的多数据库配置基本沿袭了 NHibernate 的思想,只不过在配置文件结构上作了些调整.1. 采用继承方式,归纳使用同一数据库的类型.比如 A.B.C.D.E 中 A.B连接到数据库Test1,C.D连接到Test2,而E连接到缺省的Test,那么具体的代码就会是下面这种方式. public abstract class Test1Base : ActiveRecordBase { } public abstract class Test2Base : ActiveR

zend framework2 实现多数据库配置使用的另一种方法

相比之前我发过的第一种在zend framework2中实现多数据库配置使用的方法:http://blog.csdn.net/a437629292/article/details/41121455:我更喜欢一下这种方法! 别急,听我慢慢道来. 1. 问题:第一种方法(参见上述连接),是没实例化一个model,都去实例化一个数据库适配器,这样是不是有点浪费资源呢? 所以,本人一直不满意这种实现方式,一直在寻找如何能一个请求(无论包含多少个model的调用),甚至从项目启动后,就只实例化一次数据库适

mysql主从数据库配置

在这里吧昨天做的主从数据库配置记录下来,免得以后折腾 数据库主从配置心得: master : 192.168.16.247 slave1 : 192.168.16.248 1 修改配置文件 /etc/mysql/my.cnf(如果my.cnf已有该配置项,则相应的进行修改) 主数据库: server-id = 1 log-bin = mysql-bin log-bin-index = mysql-bin.index #log_bin = /var/log/mysql/mysql-bin.log

应用程序初次运行数据库配置小程序(Java版)

应用程序初始化数据库配置小程序 之前写过一个Java版的信息管理系统,但部署系统的时候还需要手动的去配置数据库和导入一些初始化的数据才能让系统运行起来,所以我在想是不是可以写一个小程序在系统初次运行的时候自动部署数据库和导入一些初始化数据.然后就有了以下的思路: 在应用程序入口处判断数据库是否已经配置完成,若配置完成则进入正常的登录系统完成正常操作即可,若未配置则进入数据库配置的小程序完成数据库配置然后再进入系统,但如何来判断是否已经配置完成呢,在这里我用的是比较原始的方法,配置数据库的时候系统

Fluent Nhibernate 数据库配置

一.Access数据库配置 NHibernate本身不支持Access数据库,一开始看网上各种文档,捣敲浪费了N分钟.还是祭起Nuget神器引用NHibernate.JetDrive.代码如下,搞定收工... private string FilePath { get; set; } private ISessionFactory BuildSessionFactory() { var connectionString = string.Format("Provider=Microsoft.Je

atitit.动态加载数据库配置in orm hibernate mybatis

atitit.动态加载数据库配置in orm 1. 动态加载数据库配置的优点::: 1 1.1. 组合多个配置文件... 1 1.2. 连接多个数据库 1 2. 基本的流程:::getCfg内存对象,,,,生成工厂类,在opoenSession 1 2.1. Hibernate动态添加配置流程 1 2.2. mybatis动态添加配置流程 1 2.3. #===hb code 2 3. 参考 3 1. 动态加载数据库配置的优点::: 1.1. 组合多个配置文件... 1.2. 连接多个数据库 2