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

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

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

    iBATIS的多对多映射配置方法和多对一映射配置方法差不多,不同的是,多对多映射,数据库设计上需要一个记录两个类关系的中间表,本文以学生-老师为例,在iBATIS的sqlmap中配置多对多关系. iB ...

  2. Spring+MyBatis双数据库配置

    Spring+MyBatis双数据库配置 近期项目中遇到要调用其它数据库的情况.本来仅仅使用一个MySQL数据库.但随着项目内容越来越多,逻辑越来越复杂. 原来一个数据库已经不够用了,须要分库分表.所 ...

  3. laravel5 数据库配置(MySQL)

    laravel5 数据库配置(MySQL) 首先有一个安装完成可以运行的laravel框架. 配置database.php 进入laravel根目录. 在config目录下找到database.php ...

  4. discuz论坛移植修改数据库配置

    从其他地方拷贝的discuz源码,可能需要修改数据库配置 分别打开discuz目录下面以下三个文件 discuzRoot/uc_server/data/config.inc.phpdiscuzRoot ...

  5. Spring 数据库配置用户名和密码加密

    单个数据库配置 : 一般spring容器启动时,通过PropertyPlaceholderConfigurer类读取jdbc.properties文件里的数据库配置信息.通过这个原理,我们把加密后的数 ...

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

    atitit.动态加载数据库配置in orm 1. 动态加载数据库配置的优点::: 1 1.1. 组合多个配置文件... 1 1.2. 连接多个数据库 1 2. 基本的流程:::getCfg内存对象, ...

  7. 如何修改opencms数据库配置

    修改/webapps/opencms/WEB-INF/config/opencms.properties文件 什么情况下需要修改配置? 1. 使用过程中,修改数据库配置: 2. 太长时间没接触服务器, ...

  8. ThinkPHP讲解(五)——数据库配置及Model数据模型层、查询

    数据库配置 在TP框架中要进行连接数据库操作,要进行配置 要在convertion.php中找到“数据库配置”,并复制到项目配置文件config.php中 Model模型层制作 model:数据库中每 ...

  9. tomcat字符,文档,数据库配置

    修改tomcat目录下conf目录下的server.xml tomcat容器的解码配置 URIEncoding="UTF-8" <Connector port="8 ...

随机推荐

  1. npm基础知识笔记

    # NPM Study 1.npm组成 --网站 --命令行界面(CLI) --注册表   2.npm入门-创建属于你的npm账户 --https://www.npmjs.com/signup   5 ...

  2. Linux服务器报错too many open files错误解决方案

    1.本质解决方案按照oracle的安装脚本中以下几项文件进行相应配置: cp /etc/security/limits.conf /etc/security/limits.conf.bak echo ...

  3. android data recovery and nc

    目录下会出现mmcblk0.raw文件,文件大小等于手机内部存储空间的大小,该文件正是手机内部存储空间的镜像文件. 第七步,打开一款传统的数据恢复工具,由于raw文件是linux文件系统格式,因此需要 ...

  4. Qt 控制线程的顺序执行(使用QWaitCondition,并且线程类的run函数里记得加exec(),使得线程常驻)

    背景项目中用到多线程,对线程的执行顺序有要求: A.一个线程先收数据 B.一个线程处理数据 C.一个线程再将处理后的数据发送出去 要求三个线程按照ABC的顺序循环执行. 思路子类化多线程方法 重写子类 ...

  5. 转!!mysql 字段 is not null 和 字段 !=null

      今天在查询数据时,查到包含一条某个时间startTime(该字段默认为null ) 为null的记录,想把它过滤,加了 startTime != null 的条件,结果记录都没了,应该用条件 is ...

  6. python之动态参数 *args,**kwargs(聚合,打散--转载

    转自https://www.cnblogs.com/ellisonzhang/p/10243122.html 一.函数的动态参数 *args,**kwargs, 形参的顺序 1.你的函数,为了拓展,对 ...

  7. day09:Servlet详解

        day09 Servlet概述 生命周期方法: void init(ServletConfig):出生之后(1次): void service(ServletRequest request, ...

  8. github push error ---- recursion detected in die handler

    错误提示如下: 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 New Bitmap Image.bmp Coun ...

  9. centos linux 系统日常管理4 scp,rsync,md5sum,sha1sum,strace ,find Rsync 常见错误及解决方法 第十七节课

    centos linux 系统日常管理4  scp,rsync,md5sum,sha1sum,strace ,find Rsync 常见错误及解决方法  第十七节课 rsync可以增量同步,scp不行 ...

  10. centos单用户 救援 运行级别 yum,单用户模式,救援模式,inittab :启动级别 e2fsck wetty mingetty 物理终端 /dev/console 虚拟终端 /dev/tty(0,6) 模拟终端 /dev/pts/# grub-md5-crypt 给grub加密码 initrd 第二节课

    centos单用户 救援 运行级别  yum,单用户模式,救援模式,inittab :启动级别  e2fsck  wetty  mingetty  物理终端 /dev/console  虚拟终端 /d ...