zoukankan      html  css  js  c++  java
  • 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  

  • 相关阅读:
    sqlalchemy 查询姿势总结
    sqlalchemy 常用总结
    rsyslog 移植与配置方案介绍
    软件设计随想录
    C语言面对对象设计模式汇编
    关于linux kernel slab内存管理的一点思考
    linux PMBus总线及设备驱动分析
    Linux x86_64 APIC中断路由机制分析
    单板控制领域模型设计与实现
    Linux mips64r2 PCI中断路由机制分析
  • 原文地址:https://www.cnblogs.com/johden2/p/5651101.html
Copyright © 2011-2022 走看看