您的位置:首页 > 移动开发

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

2011-09-22 16:49 330 查看
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();
_mapper = builder.ConfigureAndWatch("http://www.cnblogs.com/Config/SqlMap_Oracle_OracleClient.config", handler);
}

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
or an absolute file path such as "file:\\c:\dir\a.config" */
public ISqlMapper ConfigureAndWatch( string resource, ConfigureHandler configureDelegate )

/* Configure and monitor the configuration file for modifications
and automatically reconfigure the SqlMapper.
Uses a FileInfo instance for your config file. */
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");
}

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. */
FileInfo aFileInfo = someSupportClass.GetDynamicFileInfo();
ISqlMapper mapper = builder.Configure(aFileInfo);

/* Configure a SqlMapper through a Uri. */
Uri aUri = someSupportClass.GetDynamicUri();
ISqlMapper anotherMapper = builder.Configure(aUri);

/* Configure a SqlMapper with an XmlDocument */
XmlDocument anXmlDoc = someSupportClass.GetDynamicXmlDocument();
ISqlMapper mapper = builder.Configure(anXmlDoc);

/* Configure a SqlMapper from a stream. */
Stream aStream = someSupportClass.GetDynamicStream();
ISqlMapper anotherMapper = builder.Configure(aStream);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: