在使用ibatis编写程序的时候我们希望将配置文件隐藏起来,比如数据库的配置信息等。
ibatis。net提供了嵌入资源的方式,可以将配置文件编译到程序集当中,达到保护程序的目的。
现在我们以嵌入数据库配置为例:
1.编写sqlmap.config
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<?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 文件当中。看一下配置文件的写法。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<?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文件就会编译到程序集中,把配置文件保护起来。