iBATIS的安装和配置.docx

上传人:b****0 文档编号:18364008 上传时间:2023-08-16 格式:DOCX 页数:20 大小:61.05KB
下载 相关 举报
iBATIS的安装和配置.docx_第1页
第1页 / 共20页
iBATIS的安装和配置.docx_第2页
第2页 / 共20页
iBATIS的安装和配置.docx_第3页
第3页 / 共20页
iBATIS的安装和配置.docx_第4页
第4页 / 共20页
iBATIS的安装和配置.docx_第5页
第5页 / 共20页
iBATIS的安装和配置.docx_第6页
第6页 / 共20页
iBATIS的安装和配置.docx_第7页
第7页 / 共20页
iBATIS的安装和配置.docx_第8页
第8页 / 共20页
iBATIS的安装和配置.docx_第9页
第9页 / 共20页
iBATIS的安装和配置.docx_第10页
第10页 / 共20页
iBATIS的安装和配置.docx_第11页
第11页 / 共20页
iBATIS的安装和配置.docx_第12页
第12页 / 共20页
iBATIS的安装和配置.docx_第13页
第13页 / 共20页
iBATIS的安装和配置.docx_第14页
第14页 / 共20页
iBATIS的安装和配置.docx_第15页
第15页 / 共20页
iBATIS的安装和配置.docx_第16页
第16页 / 共20页
iBATIS的安装和配置.docx_第17页
第17页 / 共20页
iBATIS的安装和配置.docx_第18页
第18页 / 共20页
iBATIS的安装和配置.docx_第19页
第19页 / 共20页
iBATIS的安装和配置.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

iBATIS的安装和配置.docx

《iBATIS的安装和配置.docx》由会员分享,可在线阅读,更多相关《iBATIS的安装和配置.docx(20页珍藏版)》请在冰点文库上搜索。

iBATIS的安装和配置.docx

iBATIS的安装和配置

译注:

本章讲解的是iBATIS的安装和配置,原书使用的是Java版本,与.NET版本的安装、配置过程不尽相同,因此这里直接就.NET版本进行说明。

主要参考的是iBATIS官方的DataMapperGuide文档,本章的配置主要针对DataMapper,DataAccess的配置将出现在第10章。

iBATIS的安装过程快速而简单。

它是一个类库,而不是应用程序,所以实际上并不需要安装,但要在应用程序中使用它还是要经过几个步骤。

如果您熟悉C#和ADO.NET,那么可能需要好好阅读本章为下面的一两章做好准备。

首先,我们提供了安装和配置过程的概览,然后是该过程的详细说明。

要获取iBATIS,您有两种选择。

可以下载二进制发行包,然后解压缩到一个目录中;也可以从Subversion资源库中获取一份源代码副本,手动生成它。

不管采用哪种方式,最终得到的是相同的一组文件。

在得到iBATIS发行包之后,只要将需要的dll文件添加到应用程序引用中即可。

3.1获取iBATIS发行包

3.1.1二进制发行包

这是最快速、简单的方式。

iBATIS已经预先生成好了,您只需要下载,解压缩,然后开始使用。

注意:

iBATIS的二进制发行包可以在http:

//ibatis.apache.org/dotnetdownloads.cgi下载(这里可以下载到dll文件,源代码,实例和文档)。

3.1.2由源代码生成

如果您有兴趣增强框架,修复bug,或者只是想通过亲自编译来了解您所得到的内容,那就可以从Subversion资源库获取一份副本,由源代码生成。

第12章中我们将深入了解扩展iBATIS框架的细节,因此本节内容会比较简单,不过这些也足够您开始使用了。

注意:

这里提到的Subversion(SVN)资源库是所有新的Apache项目使用的版本控制系统。

Subversion是CVS的替代品。

SVN的目的在于提供一个环境,使得在框架发生变化时,不用担心丢失源代码(因为每个开发人员都有一份副本,同时服务器上也存有多份拷贝)。

如果您希望更多地了解Subversion,可以访问它的主页http:

//subversion.tigris.org/。

iBATIS的Subversion资源库地址为:

http:

//svn.apache.org/repos/asf/ibatis/trunk/。

3.2发行包的内容

如果您获取的是源代码,那么会得到一个VS解决方案和几个C#项目。

在source文件夹下有8个文件夹,构成了iBATIS.NET发行包。

它们是:

FolderName

Description

External-Bin

iBATIS项目所需的依赖项程序集。

IBatisNet.Common

该程序集包含了DataAccess和DataMapper所共用的类。

IBatisNet.Common.Logging.Log4Net

Log4Net工厂适配器类。

IBatisNet.Common.Test

IBatisNet.Common的测试项目,可用于NUnit。

IBatisNet.DataAccess

DataAccessObjects框架。

IBatisNet.DataAccess.Extensions

包含一个C#项目,用于对DataAccess框架的扩展,如对NHibernate的支持。

IBatisNet.DataAccess.Test

DataAccess框架的测试项目,可用于NUnit。

IBatisNet.DataMapper

DataMapper框架。

iBatisNet.DataMapper.Test

DataMapper的测试项目,可用于NUnit。

您可以加载IBatisNet.2005.sln,生成所需的程序集。

解决方案中有7个项目,应当能够顺利通过编译。

我们需要的程序集位于\IBatisNet.DataMapper\bin\Debug下。

创建的程序集是:

∙IBatisNet.Common.dll

∙IBatisNet.DataMapper.dll

DataMapper有一个外部依赖项:

∙Castle.DynamicProxy.dll(用于创建代理)

该dll在External-Bin文件夹中。

3.3依赖项(略)

3.4将iBATIS添加到应用程序

切换到您自己的应用程序,打开要使用DataMapper的项目。

取决于解决方案的组织方式,项目有可能是Windows或Web应用程序,也可能是类库项目。

这样可能需要项目添加一到两个引用:

∙iBatisNet.DataMapper.dll

∙iBatisNet.DataAccess.dll(可选的)

∙iBatisNet.Common.dll(隐含引用)

∙Castle.DynamicProxy.dll(隐含引用)

如果您使用的Mapper单例(singleton),那么唯一需要引用的是DataMapper程序集。

IBatisNet.Common和Castle.DynamicProxy在运行时是需要的,但VS.NET会帮您解析这些依赖关系。

如果使用DataAccessObjects框架,那么还需要添加对DataAccess的引用。

如果您已经按前面说过的方式生成了iBatisNet,那么需要的三个程序集(IBatisNet.DataMapper.dll,IBatisNet.Common.dll,Castle.DynamicProxy.dll)都在DataMapper项目的bin\Debug目录下。

3.4.1添加XML文件项

在添加了对程序集的引用后,下一步是向项目(可能是Windows,Web应用程序,类库或测试项目)中添加三种类型的XML文件。

这些文件是:

∙providers.config–DataMapper在该文件中查找您选择的数据库Provider的定义。

∙SqlMap.xml–包含了SQL查询的映射文件。

您的项目中会包换一个或多个这种文件,其名称是自定义的,如Account.xml或Product.xml。

∙SqlMap.config–DataMapper配置文件,用于指定SqlMap.xml和providers.config文件的位置。

同时还定义了其它的DataMapper配置选项,如缓存。

我们需要为项目中的每个数据源编写一个SqlMap.config文件。

不难理解,SqlMap.config和providers.config文件应放在DataMapper运行时可以找到的地方。

这两个文件的默认位置取决于项目的类型,如下表所示:

Windows应用程序,类库,测试项目(使用NUnit或其它等价工具)

二进制文件夹(如/bin/debug),.dll和app.config所在目录

Web应用程序

在程序根目录,即web.config所在处

3.4.2与VS.NET集成

每一个配置文件(SqlMap.config,SQL映射文件,providers.config)都与一个XMLSchema文件关联。

这种关联的好处在于,可以对文档进行验证(在运行时完成),使用编辑器的特性如智能感知/内容自动完成。

要在VS.NET的XML编辑器中的Schema和我们的配置文件之间建立关联,应该将Schema文件(SqlMap.xsd,SqlMapConfig.xsd,providers.xsd)添加到VS.NET项目或者VS.NET安装目录。

显然第二种选择会让我们一劳永逸。

VS.NET安装目录可能是:

C:

\ProgramFiles\MicrosoftVisualStudio8\Xml\Schemas(VS.NET2005)

C:

\ProgramFiles\MicrosoftVisualStudio.NET2003\Common7\Packages\schemas\xml(VS.NET2003)

C:

\ProgramFiles\MicrosoftVisualStudio.NET\Common7\Packages\schemas\xml(VS.NET2002)。

将Schema文件注册到VS.NET后,我们就可以在VS.NET中享用智能感知和配置文档验证了。

3.5iBATIS和ADO.NET

对ADO.NET的深入讲解已经超出了本书的范围,但我们将从一个较高层次进行分析,以为本书的其它部分提供一个基础。

微软的ADO.NET的API是.NET中数据库连接的标准。

ADO.NET定义了一组接口,数据库提供商需要为其数据库产品提供接口的实现(Provider),否则,开发人员无法使用,人们认为提供商的封闭是应该避免的反模式(anti-pattern)行为。

3.5.1释放ADO.NET资源

在使用ADO.NET时,容易发生获取资源,然后却忘记了正确地释放资源的问题。

垃圾回收进程最终可能会释放它们,但这需要时间,而且没有保证。

如果这些资源没有释放掉,应用程序最终可能会耗尽资源,进而崩溃。

iBATIS框架帮助开发人员管理这些资源,从而减轻了开发人员的负担。

开发人员不再需要担心资源的分配和释放,而是关注于他们需要的数据。

但是,如果愿意,开发人员仍然可以手动地管理这些资源。

3.5.2SQL注入

另一个常见的问题(在Web应用程序中更易出现)是SQL注入,它使得应用程序不以开发人员所期望的方式执行SQL。

如果程序使用字符串拼接来构造SQL语句,但没有正确地过滤参数,恶意的用户传入的参数会改变查询的内容。

考虑类似于select*fromproductwhereid=5这样的例子。

如果这里的5直接来自用户的输入,然后同select*fromproductwhereid=拼接,那么用户可以输入5or1=1,从而改变了SQL语句的真实用意。

如果用户输入的是5;deletefromorders,那就更糟了,SQL语句会乖乖地查询一条记录,然后将orders清空。

灵活性也带来了风险,因此如果不正确地使用了iBATIS,我们的程序仍有可能会受到SQL注入的攻击。

但是,iBATIS通过使用Parameter提高了程序受到此类攻击的难度(Parameter)。

只有那些使用显式的SQL字符串置换语法的语句是有风险的。

考虑下面这个例子,该语句接受动态的表名和列名:

SELECT*FROM$TABLE_NAME$WHERE$COLUMN_NAME$=#VALUE#

这种语句在某些情况下很灵活,也很有用,却易受到SQL注入的攻击,因此要慎重使用。

这不是iBATIS的问题,这样的语句无论如何执行总会面临这种问题。

因此对于那些动态构造的语句,如果会受用户输入的影响,一定要对用户的输入进行验证。

3.5.3降低复杂性

ADO.NET非常强大,同时也是层次很低的API。

为了帮助您更好地理解iBATIS有哪些好处,我们做个比较。

(请参看2.2节工作原理中的例子)

3.6iBATIS的配置(continued)

在第2章中,我们简要地浏览了iBATIS的配置(那个例子实在简单,如果您没有阅读那一节内容也不必担心)。

在本节中,我们将创建SQLMap配置文件。

这个文件是iBATIS的核心,如图3.1所示。

图3.1描述了iBATIS的配置,其中SqlMapConfig文件是一切的核心。

3.6.1SQLMap配置文件

由图3.1可以清楚地看到,SQLMap配置文件(SqlMap.config)iBATIS配置的核心。

从数据库连接到使用的SqlMap文件的相关配置都由此文件提供。

注意:

上面说的核心配置文件名称通常为SqlMap.config。

尽管它也可以使用其它名称,我们在这里还是遵循约定。

下面的代码清单演示了一个示例配置文件,我们将在后面的章节中进行讨论。

xml version="1.0" encoding="utf-8"?

//ibatis.apache.org/dataMapper" 

xmlns:

xsi="http:

//www.w3.org/2001/XMLSchema-instance" >

  

-- Optional -->

  

  

    

    

    

  

  

-- Not required if providers.config is located in default location -->

  

  

    

    

                connectionString="user id=${username};

                password=${password};

                data source=${datasource};

                database=${database};"/>

  

  

    

    

         type="IBatisNet.Test.Domain.YesNoBoolTypeHandlerCallback, IBatisNet.Test"/>

  

  

    

  

  

    

    

    

   

在接下来的几个小节中,我们将讨论SqlMap.config文件的详细配置选项。

在接下来的3章(4,5,6)中,我们将探索在SqlMap.xml文件中定义的映射语句(MappedStatement)。

然后在第7章,我们将详细讨论事务管理相关的内容。

3.6.2元素

有时,配置文件中的同一个值会出现在多处。

通常情况下,我们将程序在服务器间迁移时,某些配置选项的值要进行修改。

为了更好地管理这些配置选项的值,我们可指定一个标准的属性文件(含有name=value对),将DataMapper的部分配置转移到其中。

在属性文件中的值将成为shell变量,可以在DataMapper配置文件和DataMap定义文件中使用。

例如,如果属性文件中包含了

xml version="1.0" encoding="utf-8" ?

>    

    

那么在DataMapper配置文件(SqlMap.config)中的任何元素都可以使用变量${UserId}来插入值”sa”。

例如:

使用属性文件使生成、测试、部署的过程变得简单。

3.6.2.1的特性(attributes)

Attribute

Description

resource

指定要从应用程序根目录加载的属性文件。

url

指定属性文件的绝对路径

\Web\MyApp\Resources\properties.config"/>

-or-

//c:

\Web\MyApp\Resources\properties.config/>

embedded

指定要从程序集的资源中加载的属性文件。

该特性的语法为’[extendednamespace.]filename,assemblyName’。

3.6.2.2元素及其特性

我们可以同时指定几个不同属性文件,或者使用元素直接向SqlMap.config文件添加键值对。

例如:

    

    

    

Attribute

Description

resource

指定要从应用程序根目录加载的属性文件。

resource="properties.config"

url

指定属性文件的绝对路径

url="c:

\Web\MyApp\Resources\properties.config"

-or-

url="file:

//c:

\Web\MyApp\Resources\properties.config"

embedded

指定要从程序集的资源中加载的属性文件。

该特性的语法为’[extendednamespace.]filename,assemblyName’。

embedded="properties.config,IBatisInAction.Ch03Web"

key

定义一个属性键(变量)名

Key="username"

value

为指定的属性定义其值。

3.6.3元素

在ADO.NET中,我们通过Provider来访问数据库系统。

对于一个数据库系统,可以使用特定的Provider,也可以使用通用的ODBCProvider。

iBATIS的DataMapper使用插件的方式来使用Provider。

每一种Provider都表现为一个XML描述元素,位于providers.config中。

iBATIS的DataMapper发行包包含了一个标准的providers.config,其中一共有13种Provider元素:

--[if!

supportLists]-->

--[endif]-->sqlServer1.0-MicrosoftSQLServer7.0/2000provideravailablewith.NETFramework1.0

--[if!

supportLists]-->

--[endif]-->sqlServer1.1-MicrosoftSQLServer7.0/2000provideravailablewith.NETFramework1.1

--[if!

supportLists]-->OleDb1.1-OleDbprovideravailablewith.NETFramework1.1

--[if!

supportLists]-->

--[endif]-->Odbc1.1-Odbcprovideravailablewith.NETFramework1.1

--[if!

supportLists]-->sqlServer2.0-MicrosoftSQLServer7.0/2000/2005provideravailablewith.NETFramework2.0

--[if!

supportLists]-->

--[endif]-->OleDb2.0-OleDbprovideravailablewith.NETFramework2.0

--[if!

supportLists]-->

--[endif]-->Odbc2.0-Odbcprovideravailablewith.NETFramework2.0

--[if!

supportLists]-->oracle9.2-OracleproviderV9.2.0.401

--[if!

supportLists]-->

--[endif]-->oracle10.1-OracleproviderV10.1.0.301

--[if!

supportLists]-->

--[endif]-->oracleClient1.0-MSOracleproviderV1.0.5availablewith.NETFramework1.1

--[if!

supportLists]-->ByteFx-ByteFxMySQLproviderV0.7.6.15073

--[if!

supportLists]-->

--[endif]-->MySql-MySQLproviderV1.0.4.20163

--[if!

supportLists]-->SQLite3-SQLite.NETproviderV0.21.1869.3794

--[if!

supportLists]-->

--[endif]-->Firebird1.7-FirebirdSQL.NETproviderV1.7.0.33200

--[if!

supportLists]-->PostgreSql0.7-NpgsqlproviderV0.7.0.0

--[if!

supportLists]-->iDb2.10-IBMDB2iSeriesproviderV10.0.0.0

注意:

如果您使用的是SQLServer2005,那么可以打开MARS(MultipleActiveResultSet)选项,即设置a

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2