从网上下载了一个IBatisNet的Demo,并结合相关文章进行理解学习。
Demo的相关配置文件包括:sqlmap.config, database.config, providers.config, web.config, 以及Person.xml文件。
下面进行学习:
参考文章:
http://www.cnblogs.com/pw/archive/2006/08/08/470060.html
首先了解sqlmap.config
IBatisNet DataMapper是通过XML文件来配置的,配置文件名称我们通常默认为SqlMap.Config,配置文件中指定了我们项目的数据库连接字符串,以及数据库表的映射文件等等.
sqlmap.config文件:
<sqlMapConfig xmlns="http://ibatis.apache.org/dataMapper" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<!-- Rem : If used via a DataAccess context, properties tag will be ignored
<properties resource="http://www.cnblogs.com/database.config"/> -->
<properties embedded="database.config, IBatisNetDemo"/>
<settings>
<setting useStatementNamespaces="${useStatementNamespaces}"/>
<setting cacheModelsEnabled="true"/>
<setting validateSqlMap="false"/>
</settings>
<!-- Optional if resource -->
<providers embedded="providers.config,IBatisNetDemo"/>
<!-- ==== SqlClient configuration ========= -->
<!-- Rem : If used via a DataAccess context, database tag will be ignored -->
<database>
<!-- Optional ( default ) -->
<provider name="sqlServer2.0"/>
<dataSource name="iBatisNet" connectionString="data source=${datasource};database=${database};user id=${userid};password=${password};connection reset=false;connection lifetime=5; min pool size=1; max pool size=50"/>
</database>
<sqlMaps>
<!-- user via embedded-->
<sqlMap embedded="Map.SqlClient.Person.xml,IBatisNetDemo"/>
</sqlMaps>
</sqlMapConfig>
解释:
1.properites
<properties embedded="database.config, IBatisNetDemo"/> 指定properties文件可作为程序集的资源文件进行加载
2.setting
useStatementNamespaces 是否使用Satement命名空间,这里的命名空间指的是映射文件中sqlMap节点的namespace属性
映射文件Person.xml:<sqlMap namespace="Person" xmlns="http://ibatis.apache.org/mapping"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
cacheModelsEnabled 是否启用DataMapper的缓存机制,针对全部的SqlMap(什么是DataMap的缓存机制?)
validateSqlMap 是否启用SqlMapConfig.xsd schema验证映射文件
3.providers
用于提供数据库驱动配置文件的文件名和路径
<providers embedded="providers.config,IBatisNetDemo"/>
4.database
其中包括两个子元素,分别是provider和datasource
如果在providers.config文件中指定了默认的数据库驱动,那么provider节点就不需要设置了,它的作用是在换数据库驱动时不需要修改providers.config文件。datasource节点用于指定ADO.NET Connection String.
<database>
<!-- Optional ( default ) -->
<provider name="sqlServer2.0"/>
<dataSource name="iBatisNet" connectionString="data source=${datasource};database=${database};user id=${userid};password=${password};connection reset=false;connection lifetime=5; min pool size=1; max pool size=50"/>
</database>
5.sqlmap
该节点下需列出所有应用程序使用的DataMapper的实例,也就是映射文件。
<sqlMap embedded="Map.SqlClient.Person.xml,IBatisNetDemo"/>
其中,带$号的变量,在database.config中配置,并通过<properties embedded="database.config, IBatisNetDemo"/>加载。
database.config文件:
<databaseConfig xmlns="http://ibatis.apache.org/dataMapper" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<settings>
<add key="userid" value="sa" />
<add key="password" value="1234" />
<add key="database" value="iBatis" />
<add key="datasource" value="(local)" />
<add key="selectKey" value="select @@IDENTITY as value" />
<add key="directory" value="Maps" />
<add key="useStatementNamespaces" value="false" />
</settings>
</databaseConfig>
也可以直接把数据库参数写在sqlmap.config文件中,而不需要database.config文件。