ibatis,IBatis.net——实例化SqlMapper的几种方式

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() ,必须设置应该程序有权限访问跟踪配置文件的更改。
1 protected static void Configure(object obj) 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 文件. 所以只能用以下三个方法。这就是为什么只用三个重载的原因。
1 /* Configure and monitor the configuration file for modifications 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 文件的目录.该方式不监视配置文件的变化,所以没有方式一的优势。配置文件的路径同方式一。
1 private static void InitMapper() 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() 方法有六个重载:
1 /*Configure s SqlMapper with the default SqlMap.config*/ 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);
Tags:  ibatis

延伸阅读

最新评论

发表评论