select属性select用于描述对象之间的关系,并自动地装入复杂类型(即用户定义的类型)属性的数据。属性select的值必须是另外一个mapped statement元素的名称。在同一个result元素中定义的数据库字段(column属性)以及property属性,将被传给相关的mapped statement作为参数。因此,字段的数据类型必须是SQL Map支持的简单数据类型。关于简单数据类型和复杂类型之间映射/关系的信息,参照后面章节更详细的讨论。
隐式的Result Map
假如您有简单的映射,不需要重用定义好的resultMap,有一个快速的方法,就是通过设定mapped statement的resultClass属性来隐式地指定result map。诀窍在于,保证返回的ResultSet的字段名称(或标签或别名)和Java Bean中可写入属性的名称匹配。例如,考虑以上的Product类,可以创建一个带有隐式result map的mapped statement如下:
<statement id=”getProduct”resultClass=”com.ibatis.example.Product">
select
PRD_ID as id,
PRD_DESCRIPTION as description
from PRODUCT
where PRD_ID = #value#
</statement>
上面的mapped statement定义了resultClass属性,并为每个字段指定了别名,用于匹配Product类的属性名称。这样就可以了,不需要result map。缺点在于,您无法指定字段的数据类型(通常不是NULLABLE字段不需要),或NULL替代值(或<result>别的属性)。另外还要记住,数据库很少是大小写敏感的,因此隐式result map对大小写也不敏感。假如您的Java Bean有两个属性,一个是firstName,另一个是firstname,数据库会把两者看作同一个属性,因而不能使用隐式的result map(这也可以看作是Java Bean设计的一个潜在问题)。此外,使用resultClass的自动映射也对性能有轻微的不利影响。因为读取ResultSetMetaData信息会使某些JDBC Driver变慢。
基本类型的Result(即String,Integer,Boolean)
除了支持符合Java Bean规范的Java类,Result Map还可以给基本类型包装类如String,Integer,Boolean等赋值。使用下面章节讨论的API(参见executeQueryForList()),Result Map还可以得到基本类型包装类的集合。基本类型可以象Java Bean一样映射,只是要记住一个限制,基本类型只能有一个属性,名字可以任意取(常用“value”或“val”)。例如,如果您要获得所有产品描述的一个列表而不是整个Product类,Result Map如下:
<resultMap id=”get-product-result” class=”java.lang.String”>
<result property=”value” column=”PRD_DESCRIPTION”/>
</resultMap>
更简单方法是,在mapped statement中使用resultClass属性(使用“as”关键字给字段取别名“value”):
<statement id=”getProductCount” resultClass=”java.lang.Integer”>
select count(1) as value
from PRODUCT
</statement>
Map类型的Result
Result Map也可以方便为一个Map(如HashMap或TreeMap)对象赋值。使用下面讨论的API(参见executeQueryForList()),还可以得到Map对象的集合(即Map的List)。Map对象与Java Bean同样的方式映射,只是使用name属性值作为Map的键值,用它来索引相应的数据库字段值,而不是象Java Bean一样给属性赋值。例如,如果您要将Product对象的数据装入Map,可以这样做:
<resultMap id=”get-product-result” class=”java.util.HashMap”>
<result property=”id” column=”PRD_ID”/>
<result property=”code” column=”PRD_CODE”/>
<result property=”description” column=”PRD_DESCRIPTION”/>
<result property=”suggestedPrice” column=”PRD_SUGGESTED_PRICE”/>
</resultMap>
上面的例子会创建一个HashMap的实例并用Product的数据赋值。Property的name属性值(即“id”)作为HashMap的键值,而列值则作为HashMap中相应的值。
当然,可以把Map类型Result和隐式的Result Map一起使用。例如:
<statement id=”getProductCount” resultClass=”java.util.HashMap”>
select * from PRODUCT
</statement>
上面的例子中,结果集将以Map类型返回。
分享到:
相关推荐
"教程"标签则暗示了这些代码不仅可供参考,还可能带有详细的注释和解释,便于自学和教学。"代码"标签则明确指出这是编程实现,而非理论文档。 压缩包内的"实验示例"文件名表明,这些代码可能来源于实验室环境,是...
【标题】"实例代码.Rar" 是一个包含ASP.NET网站设计实例源代码的压缩文件,提供了实际操作中的应用示例,对于学习和理解ASP.NET技术非常有帮助。 【描述】"ASP.NET 网站设计实例通 实例代码.Rar" 提示这个压缩包...
压缩包中的"C#网络编程_PPT"可能是一个包含教程讲解的PowerPoint演示文稿,其中可能包含了详细的概念解释、步骤说明以及代码示例的分析。通过PPT,你可以系统地学习网络编程的各个方面,从基础知识到高级技术,如套...
【标题】:“部分标签文档实例解释说明” 这篇文档主要针对的是如何理解和运用“部分标签”这一概念,这在编程和网站开发中是非常重要的一个部分。部分标签,通常指的是在网页模板或者应用程序中,用于组合和复用...
标题 "C#分词程序源代码实例" 涉及的核心知识点主要集中在C#编程语言、文本处理和分词算法上。C#是Microsoft开发的一种面向对象的编程语言,广泛应用于Windows平台上的软件开发,包括桌面应用、Web应用以及游戏开发...
【标签】:“网盘地址”标签提示我们,这些小游戏实例代码是通过网络云存储服务进行分发的,可能是为了方便用户快速下载和分享。通常,这样的资源可能会包含多个文件夹,分别对应不同游戏项目,每个项目下会有相关的...
1. **程序使用说明.doc**:这通常是一个文档,详细解释了如何使用这些实例代码,包括可能的输入、预期的输出以及执行步骤。阅读这个文档将帮助用户更好地理解每个示例的目的和操作方式。 2. **Desktop_.ini**:这是...
【标题】"源代码-生成柱状图实例代码.zip" 提供的是一个使用ASP(Active Server Pages)技术生成柱状图的源代码示例。在ASP中,我们通常利用服务器端脚本语言如VBScript或JScript来动态生成网页内容。在本案例中,这...
以下是这九个内置对象的详细说明,以及如何在实际开发中使用它们: 1. **pageContext对象**: - `PageContext`对象提供对整个JSP页面的访问,可以获取其他所有内置对象的引用,也可以用来存储页面级的数据。 - ...
标题中的“下载进度条实例+代码+说明”指的是一个实现下载功能并带有进度显示的程序示例,通常在开发过程中,这种组件用于提供用户友好的界面,让用户了解文件下载的状态。这种实例对于开发者来说非常有价值,因为它...
### PHPCMS标签的详细说明 #### 中文标签 PHPCMS系统为了简化模板的制作流程及提升用户体验,引入了中文标签的概念。这种标签模式相较于早期版本中的长标签调用方式更加直观易懂,降低了非专业技术人员制作模板的...
此外,它还提到包含了开发文档,这意味着除了源代码外,还有详细的步骤说明、功能解释以及可能的调试和优化指南,帮助学习者理解和实现这些代码。 【标签】"计算机网络"表明这些代码涉及到网络通信,即如何通过HTTP...
标题中的“JAVA编程经典实例100个[源代码]”指的是这是一份包含100个Java编程的经典示例的资源包,其中包含了源代码,可以帮助学习者深入理解和掌握Java编程语言的各种核心概念和应用。 描述部分提到,每个实例目录...
"源代码"标签表明这个压缩包包含了实现这些功能的实际代码。在www.maoyeah.com.txt、maoyeah和maoyeah_com这三个文件中,可能包含了关于如何使用这些对话框实例的说明、示例代码或者可能是实际的源码文件。`...
标题中的"COM编程精彩实例 代码"意味着这个压缩包包含了使用COM技术的多个实例代码,这些实例可能是解决特定问题或展示特定功能的。通过分析和学习这些实例,开发者可以深入理解COM组件的创建、注册、调用以及它们...
标题中的"PHP导入和导出CSV EXCEL实例代码"指的是使用PHP编写程序,实现对CSV(逗号分隔值)和Excel文件的数据处理。CSV格式是一种简单且通用的数据交换格式,而Excel文件(通常是.xlsx或.xls格式)通常用于更复杂的...
本教程将深入探讨XHTML布局实例,通过具体的代码示例来帮助Java学习者更好地理解网页设计的基础。 XHTML布局的核心在于对元素的精确控制,它强调语义化标签的使用,这有助于搜索引擎优化和无障碍访问。例如,`<div>...
“程序代码”明确了这是关于编程实现的,而“滤波”则说明了代码的核心功能是对信号进行滤波处理,可能包括低通、高通、带通或带阻滤波。 从“压缩包子文件的文件名称列表”来看,只有一个文件名为"FIR",这可能是...
QT4 GUI(图形用户界面)实例代码是一套用于学习和实践C++ GUI编程的资源,特别适合初学者。QT4是Qt库的一个版本,它是一个跨平台的应用程序开发框架,支持Windows、Linux、Mac OS X等多种操作系统。通过QT4,开发者...
【标签】"top2812 官方 实例 源代码"进一步巩固了我们的理解,即这个资源主要围绕"top2812"进行,包含了官方支持的实例和源代码,适合开发者进行学习和调试。 【压缩包子文件的文件名称列表】:TOP2812_CODE可能...