在使用ibatis编写程序的时候我们希望将配置文件隐藏起来,比如数据库的配置信息等。
ibatis。net提供了嵌入资源的方式,可以将配置文件编译到程序集当中,达到保护程序的目的。
现在我们以嵌入数据库配置为例:
1.编写sqlmap.config

<?xml version="1.0" encoding="utf-8"?>
<sqlMapConfig xmlns="http://ibatis.apache.org/dataMapper" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<!-- 外部配置文件
<properties resource="properties.config" />
-->
<properties embedded="database.config,renshi"/>
<settings>
<setting useStatementNamespaces="${useStatementNamespaces}"/>
</settings>
<providers embedded="providers.config,renshi"/>
<!-- 数据库连接信息 -->
<database>
<provider name="sqlServer2.0" />
<dataSource name="datasource" connectionString="data source=${datasource};database=${database};user id=${userid};password=${password};connection reset=false;connection lifetime=5; max pool size=50"/>
</database>
<!-- SqlMap.xml 信息 -->
<sqlMaps>
<sqlMap resource="Maps/Common.config" />
<sqlMap resource="Maps/Mylog.config"/>
</sqlMaps>
</sqlMapConfig>
<sqlMapConfig xmlns="http://ibatis.apache.org/dataMapper" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<!-- 外部配置文件
<properties resource="properties.config" />
-->
<properties embedded="database.config,renshi"/>
<settings>
<setting useStatementNamespaces="${useStatementNamespaces}"/>
</settings>
<providers embedded="providers.config,renshi"/>
<!-- 数据库连接信息 -->
<database>
<provider name="sqlServer2.0" />
<dataSource name="datasource" connectionString="data source=${datasource};database=${database};user id=${userid};password=${password};connection reset=false;connection lifetime=5; max pool size=50"/>
</database>
<!-- SqlMap.xml 信息 -->
<sqlMaps>
<sqlMap resource="Maps/Common.config" />
<sqlMap resource="Maps/Mylog.config"/>
</sqlMaps>
</sqlMapConfig>
通过以上代码,我们可以看到有两个文件是被编译到程序集中。
1.<properties embedded="database.config,renshi"/>
2.<providers embedded="providers.config,renshi"/>
这两个文件被编译到程序集rensh的exe文件中
在datasource 配置中数据源,数据库名,用户名和密码是使用${}的标签。
这写配置我们写在了 database.config 文件当中。看一下配置文件的写法。

<?xml version="1.0" encoding="utf-8" ?>
<settings>
<add key="userid" value="sa" />
<add key="password" value="sasa" />
<add key="database" value="test" />
<add key="datasource" value="." />
<add key="selectKey" value="select @@IDENTITY as value" />
<add key="directory" value="Maps" />
<add key="useStatementNamespaces" value="false" />
</settings>
<settings>
<add key="userid" value="sa" />
<add key="password" value="sasa" />
<add key="database" value="test" />
<add key="datasource" value="." />
<add key="selectKey" value="select @@IDENTITY as value" />
<add key="directory" value="Maps" />
<add key="useStatementNamespaces" value="false" />
</settings>
另外点击database.config文件,修改文件属性,生成操作修改为 “嵌入的资源”。
这样重新编译后,database.config文件就会编译到程序集中,把配置文件保护起来。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人