先看个具体的例子:
<resultMap id=”get-product-result” class=”com.ibatis.example.Product”>
<result property=”id” column=”PRD_ID”/>
<result property=”description” column=”PRD_DESCRIPTION”/>
</resultMap>
<statement id=”getProduct” resultMap=”get-product-result”>
select * from PRODUCT
</statement>
注意resultMap支持“select *”,并不要求定义ResultSet所有返回字段的映射。
在SQL Map框架中,Result Map是极其重要的组件。在执行查询Mapped Statement时,resultMap负责将结果集的列值映射成Java Bean的属性值。resultMap的结构如下:
<resultMap id=”resultMapName” class=”some.domain.Class” [extends=”parent-resultMap”]>
<result property=”propertyName” column=”COLUMN_NAME”
[columnIndex=”1”]
[javaType=”int”]
[jdbcType=”NUMERIC”]
[nullValue=”-999999”]
[select=”someOtherStatement”]
/>
<result ……/>
<result ……/>
<result ……/>
</resultMap>
1.extends
是可选的属性,可设定成另外一个resultMap的名字,并以它为基础。和在Java中继承一个类相似,父resultMap的属性将作为子resutlMap的一部分。父resultMap的属性总是加到子resultMap属性的前面,并且父resultMap必须要在子resultMap之前定义。父resultMap和子resultMap的class属性不一定要一致,它们可以没有任何关系。
注意!ResultSet的列值按它们在resultMap中定义的顺序读取
(这特性会在某些实现得不是很好的JDBC Driver中派上用场)。
2.属性columnIndex
的值是ResultSet中用于赋值Java Bean属性的字段次序号,
提供了我们将数据集的第几个下标字段映射到指定的数据对象属性的方案
3.属性nullValue
指定数据库中NULL的替代值。因此,如果从ResultSet中读出NULL值,Java Bean属性将被赋值属性null指定的替代值。属性null的值可以指定任意值,但必须对于Java Bean属性的类型是合法的。
4.属性select
用于描述对象之间的关系,并自动地装入复杂类型(即用户定义的类型)属性的数据。属性select的值必须是另外一个mapped statement元素的名称。
for instance:
<resultMap id="DemoResultMap" class="Hashtable">
<result property="id" column="id"/>
<result property="Children" column="id"
select="SELECT_Children"/>
</resultMap>
<statements>
<select id="SELECT_Children" resultClass="ChildrenObject">
SELECT * FROM Children WHERE ParentID = #id#
</select>
</statements>
分享到:
相关推荐
在IBatis中,ResultMapping的名称需要加上namespace,例如:<resultMap id="xxxMap" class="xxx"> <result property="abc" resultMap="ns.yyyMap"/> </resultMap>。 3. IBatis的配置错误 在配置IBatis时,可能会...
**深入分析 iBATIS 框架之系统架构与映射原理** iBATIS 是一个优秀的持久层框架,它允许开发者将 SQL 语句与 Java 代码分离,从而简化了数据库访问层的开发工作。本篇文章将深入探讨 iBATIS 的核心系统架构以及其...
另外,Ibatis还支持ResultMap,用于将查询结果映射到Java对象。ResultMap不仅可以自动匹配列名与字段名,还可以处理复杂的一对多、多对一、一对一的关系映射。此外,Ibatis还提供了TypeHandler机制,用于自定义Java...
在`org.apache.ibatis.executor.resultset.ResultSetHandler`中,ResultMap被用来定义字段与Java对象属性的映射关系。ResultMap不仅支持简单的列名映射,还能处理复杂的一对多、一对一关系映射。 六、...
此外,iBATIS还提供了一些辅助工具,如`ParameterMap`用于管理SQL语句的输入参数,`ResultMap`用于处理查询结果的映射,以及`Cache`机制,用于缓存查询结果,提高系统性能。这些工具类使得开发者能够更方便地进行...
在本教程中,我们将深入探讨如何搭建用于实战的iBatis基础环境,同时结合源码进行学习。iBatis是一个优秀的、开源的SQL映射框架,它能够将Java应用程序中的数据库操作与SQL语句分离,使得开发人员可以更加专注于业务...
Ibatis 是一款轻量级的Java持久层框架,它允许开发者将SQL语句与Java代码分离,从而使得数据库访问更加灵活、易于维护。本篇文章将深入探讨Ibatis的核心概念、最佳实践以及与其他框架如Struts和Spring的整合。 1. ...
6. ResultMap和ResultSetHandler:ResultMap定义了结果集的映射规则,而ResultSetHandler则将数据库查询的结果转换为Java对象。 7. Statement:代表了数据库的SQL语句,包括PreparedStatement(预编译SQL)和...
**IBATIS API 帮助文档与IBATIS开发文档详解** IBATIS,一个由iBATIS公司开发的开源持久层框架,是Java世界中广泛使用的数据访问接口(DAO)工具。它允许开发者将SQL语句直接写在XML配置文件中,实现了SQL与Java...
在iBatis的映射文件中,我们需要为主表(一对一的一方)和从表(一对一的多方)分别创建`<resultMap>`。在主表的`<resultMap>`中,通过`<collection>`标签指定从表的映射信息,包括属性名、类型、SQL查询(通常用`...
例如,你可以通过使用`<if>`、`<choose>`等标签来编写条件语句,通过`<resultMap>`来定义复杂的对象关系映射。 学习Ibatis,不仅能够提高开发效率,还能使代码更加清晰、易于维护。随着对Ibatis的深入理解和实践,...
SqlSessionFactory是ibatis的核心组件之一,负责创建SqlSession实例。可以通过以下两种方式构建SqlSessionFactory: 1. **从XML构建**:使用`SqlSessionFactoryBuilder`类的`build()`方法,传入包含配置信息的XML...
iBatis的核心功能之一就是对象关系映射(ORM)。它将数据库中的记录映射到Java对象,反之亦然。在XML映射文件中,你可以定义`resultMap`来描述字段与对象属性之间的对应关系。 ### iBatis 高级特性 #### 数据关联 ...
4. 结果映射:通过`@ResultMap`注解或`<resultMap>`标签进行结果集映射。 六、IbatisDemo学习要点 1. 理解Ibatis的基本架构和工作原理。 2. 掌握SqlMapConfig.xml的配置,如数据源设置、事务管理等。 3. 学习Mapper...
Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,使得开发者能够将SQL语句与Java代码分离,从而更好地管理数据库操作。Ibatis的出现,解决了传统JDBC中手动编写SQL和结果集映射的繁琐工作,...
2. 结果映射:使用 `<resultMap>` 定义结果集映射规则,可以进行复杂的列名和属性名映射,支持关联对象映射。 六、事务管理 Ibatis 支持编程式和声明式两种事务管理方式。编程式事务管理通过 `SqlSession` 的 begin...
5. **结果映射(ResultMap)**:Ibatis的ResultMap用于处理复杂的查询结果,它可以映射多对一、一对多的关系,或者处理自定义类型转换等复杂情况。 6. **动态SQL**:Ibatis的动态SQL功能允许在XML配置文件中编写...
1.4 结果集映射:通过 `<resultMap>` 元素,定义了 SQL 查询结果如何映射到 Java 对象,支持一对一、一对多、多对多等复杂关系映射。 **2. Ibatis 工作原理** 2.1 配置:在启动时,Ibatis 读取配置文件,加载 SQL ...
6. **结果映射**:返回的结果可以通过ResultMap进行自动映射到Java对象,或者使用resultType或resultMap指定返回类型。 **iBatis迭代的用法** 在处理查询结果时,iBatis提供了迭代的用法,可以方便地遍历查询结果...