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. C++和C#的思考

    从2011年从业至今已经写了7年C++了,而C#.go语言虽然早有涉猎,但直到最近才开始思考语言的发展和工程之间的关系. C++ 更容易写出高内聚代码使用指针做原地内存操作直接堆栈控制,减少内存分配, ...

  2. 徐州网络赛A-Hard To Prepare【dp】【位运算】【快速幂】

    After Incident, a feast is usually held in Hakurei Shrine. This time Reimu asked Kokoro to deliver a ...

  3. 修改Docker默认存储位置的方法

    在日常使用中由于我们的根目录通常都比较小,如果想大量存储容器镜像的话很容易导致根目录写满 docker 默认的数据目录是/var/lib/docker 我们想要移动数据目录可以按照下面说明操作即可. ...

  4. HTTPS握手

    作用 内容加密 建立一个信息安全通道,来保证数据传输的安全: 身份认证 确认网站的真实性 数据完整性 防止内容被第三方冒充或者篡改 https的采用了对称加密和非对称加密.握手过程中采用非对称加密,得 ...

  5. 小米范工具系列之五:小米范WEB口令扫描器

    最新版本1.2,下载地址:http://pan.baidu.com/s/1c1NDSVe  文件名 webcracker,请使用java1.8运行 小米范WEB口令扫描器的主要功能是批量扫描web口令 ...

  6. centos LAMP第三部分php,mysql配置 php配置文件 配置php的error_log 配置php的open_basedir 安装php的扩展模块 phpize mysql配置第二十一节课

    centos   LAMP第三部分php,mysql配置 php配置文件   配置php的error_log  配置php的open_basedir 安装php的扩展模块 phpize  mysql配 ...

  7. Windows版本搭建安装React Native环境配置

    1 安装Chocolatey 打开cmd黑窗口 @powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((new-obje ...

  8. sdut AOE网上的关键路径(spfa+前向星)

    http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2498&cid=1304 题目描述 一个无环的有向图称为无环图(Directed Acyc ...

  9. 解决不能在本地使用JQuery load的方法

    $.ajaxSetup({ xhr: function () { if ("ActiveXObject" in window) { return new ActiveXObject ...

  10. jQuery获取属性

    jQuery在获取jQuery对象的属性时,出现attr()获取不到的情况,此时,请使用prop()获取 如下为经常用到的: var oHtml=$(this).prop("outerHTM ...