从网上下载了一个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文件:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
< 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文件:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
< 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文件。