先看个具体的例子:
- <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>
参考:
http://xulongfa.iteye.com/blog/428674
http://jc-dreaming.iteye.com/blog/499917
分享到:
相关推荐
ResultMap是iBatis中的一个重要特性,用于更复杂的数据映射场景。 - 可以用来处理一对多或多对多关系。 - 使用关联查询和其他高级SQL技巧时非常有用。 **Contact.xml示例**: ```xml <resultMap id=...
在`org.apache.ibatis.executor.resultset.ResultSetHandler`中,ResultMap被用来定义字段与Java对象属性的映射关系。ResultMap不仅支持简单的列名映射,还能处理复杂的一对多、一对一关系映射。 六、...
此外,iBATIS还提供了一些辅助工具,如`ParameterMap`用于管理SQL语句的输入参数,`ResultMap`用于处理查询结果的映射,以及`Cache`机制,用于缓存查询结果,提高系统性能。这些工具类使得开发者能够更方便地进行...
ResultMap是iBatis中的另一个重要概念,它用于定义结果映射关系。用户可以使用ResultMap来定义结果映射关系,以便将数据库查询结果映射到强类型数据对象中。 7.iBatis的应用场景 iBatis可以应用于各种数据访问场景...
6. ResultMap和ResultSetHandler:ResultMap定义了结果集的映射规则,而ResultSetHandler则将数据库查询的结果转换为Java对象。 7. Statement:代表了数据库的SQL语句,包括PreparedStatement(预编译SQL)和...
**IBATIS API 帮助文档与IBATIS开发文档详解** IBATIS,一个由iBATIS公司开发的开源持久层框架,是Java世界中广泛使用的数据访问接口(DAO)工具。它允许开发者将SQL语句直接写在XML配置文件中,实现了SQL与Java...
在IBatis中,ResultMapping的名称需要加上namespace,例如:<resultMap id="xxxMap" class="xxx"> <result property="abc" resultMap="ns.yyyMap"/> </resultMap>。 3. IBatis的配置错误 在配置IBatis时,可能会...
`resultMap`是ibatis中一个重要的概念,用于描述SQL查询结果与Java对象之间的映射关系。通过`resultMap`可以实现复杂的对象关系映射,如一对一、一对多等关联关系。 ### 动态SQL ibatis还支持动态SQL语句,可以...
例如,你可以通过使用`<if>`、`<choose>`等标签来编写条件语句,通过`<resultMap>`来定义复杂的对象关系映射。 学习Ibatis,不仅能够提高开发效率,还能使代码更加清晰、易于维护。随着对Ibatis的深入理解和实践,...
iBatis 是一款轻量级的Java持久层框架,它主要负责将数据库操作与业务逻辑解耦,使得开发者可以更加专注于SQL和业务代码的编写。本文档将详细讲解iBatis的核心概念、快速入门以及高级特性。 ### iBatis 快速启动 #...
4. 结果映射:通过`@ResultMap`注解或`<resultMap>`标签进行结果集映射。 六、IbatisDemo学习要点 1. 理解Ibatis的基本架构和工作原理。 2. 掌握SqlMapConfig.xml的配置,如数据源设置、事务管理等。 3. 学习Mapper...
2. 结果映射:使用 `<resultMap>` 定义结果集映射规则,可以进行复杂的列名和属性名映射,支持关联对象映射。 六、事务管理 Ibatis 支持编程式和声明式两种事务管理方式。编程式事务管理通过 `SqlSession` 的 begin...
5. **结果映射(ResultMap)**:Ibatis的ResultMap用于处理复杂的查询结果,它可以映射多对一、一对多的关系,或者处理自定义类型转换等复杂情况。 6. **动态SQL**:Ibatis的动态SQL功能允许在XML配置文件中编写...
6. **结果映射**:返回的结果可以通过ResultMap进行自动映射到Java对象,或者使用resultType或resultMap指定返回类型。 **iBatis迭代的用法** 在处理查询结果时,iBatis提供了迭代的用法,可以方便地遍历查询结果...
1.4 结果集映射:通过 `<resultMap>` 元素,定义了 SQL 查询结果如何映射到 Java 对象,支持一对一、一对多、多对多等复杂关系映射。 **2. Ibatis 工作原理** 2.1 配置:在启动时,Ibatis 读取配置文件,加载 SQL ...
在映射文件中,使用 `<resultMap>` 定义对象字段与 SQL 列的映射关系。 7. **Mybatis 的优势** - 灵活的 SQL:Ibatis 允许开发者自由编写 SQL,避免了 ORM 框架的过度抽象。 - 事务控制:Ibatis 提供了对事务的...
5. **自动生成select语句**:在标签处,按Alt+Enter选择Generate result for resultMap or resultClass,插件会根据parameterClass或parameterMap自动生成对应的select语句。 6. **SqlMapClient方法调用的代码提示*...
通过定义`<resultMap>`,我们可以指定列名与Java属性的对应关系,甚至处理一对一、一对多、多对多等复杂关系。 4. **事务管理**:iBatis可以方便地进行事务控制,通过SqlSessionFactory和SqlSession对象,我们可以...
`<resultMap>`标签可以处理复杂的一对多、一对一、多对多关系,以及自定义的类型转换。 6. **事务管理**: iBatis支持JDBC和Spring的事务管理方式,通过`transactionManager`配置来决定。在Spring环境下,可以利用...
- **一对一关联**:一个实体类与另一个实体类之间存在一对一的关系,Ibatis通过resultMap标签实现这种映射。 - **延迟加载**:Ibatis允许延迟加载关联的对象,直到真正需要时才执行相关的查询,提高性能。 - **动态...