6.5.4.1type属性
声明一个type属性时,它的值必须是完整的类名。格式如下:
type=\命名空间.类名],[组件名],Version=[版本号],Culture=[culture],PublicKeyToken=[公钥标记]\例如:
type=\
对于强类型的命名,可以采用下面的简化方式设置:type=\MyProject.Domain\下表是预先定义好的别名(Alias)
CLRTypeSystem.ArrayListSystem.BooleanSystem.ByteSystem.CharSystem.DateTimeSystem.DecimalSystem.DoubleSystem.GuidSystem.HashtableSystem.Int16System.Int32System.Int64System.SByteSystem.SingleSystem.StringSystem.TimeSpanSystem.UInt16System.UInt32System.UInt64
Aliaslist
Boolean,boolByte,byteChar,chardateTime,dateDecimal,decimalDouble,doubleguid
map,hashmap,hashtableInt16,short,Short
Int32,int,Int,integer,IntegerInt64,long,LongSByte,sbyte
Float,float,Single,singleString,stringN/AShort,shortUint,uintUlong,ulong
6.5.5
该元素用于声明客户自定义的类型引擎。DataMapper的扩展允许用户自定义数据类型,可以使数据库提供者中包含的类型,也可以是它不包含的类型,或者仅在部分应用程序中使用的类型。例如:
6.5.5.1 属性 说明 类型引擎的名称type=\ typedbType表征在数据提供者中对应的数据类型dbType=\ 注:如果想用这个类型引擎替换掉iBATIS默认的类型引擎,可以忽略调这个属性 callback自定义类型引擎类名的别名:callback=\ 6.5.6 userid=IBatisNet;password=test;connectionreset=false;connectionlifetime=5;minpoolsize=1;maxpoolsize=50\/> 6.5.6.1 如果使用默认的数据提供者,可以删掉 6.5.6.2 下面的例子中给出了常用的数据源连接字符串格式,包括:SQLServer,Oracle,Access,MySql,PostgreSQL. 6.5.7 在基于数据映射的环境下,应用程序的数据映射文件中定义了SQL语句或存储过程,同时也定义了参数和查询运行的返回对象。随着应用程序的复杂化,就需要使用多个数据映射文件来区分这些映射定义。为了有效的管理和组织这些映射定义文件,在DataMapper配置文件中采用引用的方式来将他们进行逻辑集成,根据这个设计思路,就需要把DataMapper实例所使用的全部映射定义文件添加到配置文档中。 下例的 说明:根据工程性质的不同,数据映射文件的位置表示会有不同,为了有效的管理这些数据映射文件的位置值,可以通过标准属性文件的方式,定义变量值并在 6.6iBATISDataMapper程序设计 6.6.1iBATISDataMapper中提供的.NETAPI IBATIS.NET数据映射框架API提供了4个核心的函数: (1)通过读取配置文件创建一个SqlMapper实例;(2)执行一个更新数据库的查询(包括insert、delete);(3)执行一个返回单个对象的select查询;(4)执行一个返回单个对象列表的select查询API还提供了用于列表分页的函数和使用事务的函数。 6.6.1.1创建SqlMapper实例 重要说明: 先前的版本中,SqlMapper依赖于配置文件。本版中在DomSqlMapBuilder类中使用几个配置API对此进行了优化。原来的方法仍让保留在组件中,但新加入的方法更加灵活和适用。新增加的方法支持通过输入Stream,Uri,FileInfo,或者XmlDocument实例来加载配置信息。 XML文档是描述数据库配置和数据映射的最佳载体,但是XML是不能运行的文档格式。为了在.NET应用程序中使用iBATIS.NET的配置映射定义,需要一个类来供我们调用。 映射框架提供了服务性质的方法来供我们读取配置文档和数据映射定义文档时调用,并且创建SqlMapper对象。SqlMapper对象具有多线程并且长期活动(不挂起或者终止)的性能,因此它也具有单实例的性质。 下面是Mapper类的一段源程序:[C#] usingIBatisNet.Common.Utilities;usingIBatisNet.DataMapper; usingIBatisNet.DataMapper.Configuration; namespaceIBatisNet.DataMapper{ publicclassMapper{ privatestaticvolatileISqlMapper_mapper=null; protectedstaticvoidConfigure(objectobj){ _mapper=null;} protectedstaticvoidInitMapper(){ ConfigureHandlerhandler=newConfigureHandler(Configure);DomSqlMapBuilderbuilder=newDomSqlMapBuilder();_mapper=builder.ConfigureAndWatch(handler);} publicstaticISqlMapperInstance() { if(_mapper==null){ lock(typeof(SqlMapper)){ if(_mapper==null)//double-check{ InitMapper();}}} return_mapper;} publicstaticISqlMapperGet(){ returnInstance();}}} 外界调用方法: ISqlMappermapper=Mapper.Instance(); 应用程序的任何地方都可以按照如下方式来调用:[C#] IListlist=Mapper.Instance().QueryForList(\values);说明: (1)第一次调用Mapper.Instance().的时候,DomSqlMapBuilder对象会通过查询SqlMap.config文件来创建一个qlMapper实例。在以后的调用中,缓存中的mapper对象会被再次使用。DomSqlMapBuilder.ConfigureAndWatch()方法负责监视配置文件的更新情况。如果配置文件或者数据映射定义文件有变化,SqlMapper对象会被安全的重新载入。这个特点在开发过程中可能会用到,例如在变更数据映射定义文件后想观察一下变更的影响在不重启应用程序的情况下就能完成,又如,在系统实际运行时,也可以在不重启应用系统的的情况下完成对配置文件或者数据映射定义文件的更新。 (2)ConfigureAndWatch()方法要求应用程序所部署的计算机系统中的文件系统能够允许对SqlMap.config文件和数据映射配置文件进行跟踪访问。 (3)如果不需要对配置文件和数据映射文件进行监视,可以采用下面的语句进行调用: ISqlMappermapper=builder.Configure(); 6.6.1.2多数据源配置 若在应用程序中需要配置多个数据源,可以创建一个新的DataMapper配置文件(SqlMapConfig格式文件),并且构建另一个Mapper类来对应一个新数据源。在Mapper类中改为如下的调用方式: ISqlMappermapper=builder.ConfigureAndWatch(\handler);