IBatis.net作为一个Data Mapper 框架,SqlMapper类就是应用程序跟它打交道的核心。如何从配置文件中实例化SqlMapper类,有以下几种方式。并加以区别,请根据实际情况选择合适的方式进行编码。
方式一:代码如下,DomSqlMapBuilder对象在默认项目类型目录下(如果不指定目录的话)查找
SqlMap.config
文件(如果不指定config文件的话), DomSqlMapBuilder.ConfigureAndWatch
() 方法监视配置文件的变动. 一旦配置文件(config和Sql map文件)更改, SqlMapper
实例将重新安全加载. 这在开发中尤其有用, 当你在启动调试的测试中,改变data map 文件可以立即看到结果,而不需求从新启动调试。同样,在生产环境中,可以更改这些配置,而不需要重新加载应用程序的其他部分。
配置文件路径:
1,使用相对路径,即相对于应用程序根目录。
2,放在应用程序根根目录。 根据项目类型不同而不同,就是Web.config或app.config所目录。如果是建立单独的测试项目,就要放在编译目录,为什么是编译目录,因为DomSqlMapBuilder对象是在编译目录下查找配置文件,如果你不知道编译目录在哪里。那就把配置文件放置在根目录下,或者根目录下任何一个文件夹里,并把配置文件的属性设置为“始终复制”或“如果较新则复制”。编译时会自动把配置文件复制到编译根目录。
3,使用绝对路径,该路径可以配在应用程序的配置文件中,通过代码读取,部署方便。
注意:使用 DomSqlMapBuilder.ConfigureAndWatch
() ,必须设置应该程序有权限访问跟踪配置文件的更改。
2 {
3 _mapper = null ;
4 }
5
6 protected static void InitMapper()
7 {
8 ConfigureHandler handler = new ConfigureHandler(Configure);
9 DomSqlMapBuilder builder = new DomSqlMapBuilder();
10 _mapper = builder.ConfigureAndWatch( " http://www.cnblogs.com/Config/SqlMap_Oracle_OracleClient.config " , handler);
11 }
DomSqlMapBuilder.ConfigureAndWatch
()方法有三个重载,由于需要监视文件的更改,只能通过文件系统来获取SqlMap.config 文件. 所以只能用以下三个方法。这就是为什么只用三个重载的原因。
2 and automatically reconfigure the SqlMapper.
3 This basic ConfigureAndWatch method looks for a file with the
4 default name of SqlMap.config in the application root directory. */
5 public ISqlMapper ConfigureAndWatch(ConfigureHandler configureDelegate)
6
7 /* Configure and monitor the configuration file for modifications
8 and automatically reconfigure the SqlMapper.
9 Uses a relative path from your application root
10 or an absolute file path such as "file:\\c:\dir\a.config" */
11 public ISqlMapper ConfigureAndWatch( string resource, ConfigureHandler configureDelegate )
12
13 /* Configure and monitor the configuration file for modifications
14 and automatically reconfigure the SqlMapper.
15 Uses a FileInfo instance for your config file. */
16 public ISqlMapper ConfigureAndWatch( FileInfo resource, ConfigureHandler configureDelegate )
方式二:代码如如下,调用DomSqlMapBuilder.Configure()
方法,将在应该用程序根目录下查找文件名为SqlMap.config的文件.根目录随项目类型不同而不同,通常是放 web.config 或app.config 文件的目录.该方式不监视配置文件的变化,所以没有方式一的优势。配置文件的路径同方式一。
2 {
3 // ConfigureHandler hander = new ConfigureHandler(Configure);
4 // DomSqlMapBuilder builder = new DomSqlMapBuilder();
5 // _mapper = builder.ConfigureAndWatch("SybaseSqlMap.config", hander);
6
7 // don't need ConfigureHandler class
8 DomSqlMapBuilder builder = new DomSqlMapBuilder();
9 _mapper = builder.Configure(ConfigurationSettings.AppSettings[ " rootPath " ] + " SqlMap_Sybase_Odbc.config " );
10 }
DomSqlMapBuilder.Configure() 方法有六个重载:
2 ISqlMapper mapper = builder.Configure();
3
4 /* Configure s SqlMapper with the specified SqlMap.config */
5 mapper = builder.Configure(
6 ConfigurationSettings.AppSettings[ " rootPath " ] + " SqlMap.config " );
7
8
9 /* Configure a SqlMapper with FileInfo. */
10 FileInfo aFileInfo = someSupportClass.GetDynamicFileInfo();
11 ISqlMapper mapper = builder.Configure(aFileInfo);
12
13 /* Configure a SqlMapper through a Uri. */
14 Uri aUri = someSupportClass.GetDynamicUri();
15 ISqlMapper anotherMapper = builder.Configure(aUri);
16
17 /* Configure a SqlMapper with an XmlDocument */
18 XmlDocument anXmlDoc = someSupportClass.GetDynamicXmlDocument();
19 ISqlMapper mapper = builder.Configure(anXmlDoc);
20
21 /* Configure a SqlMapper from a stream. */
22 Stream aStream = someSupportClass.GetDynamicStream();
23 ISqlMapper anotherMapper = builder.Configure(aStream);