`

ibatis Tips 之 resultMap

阅读更多

转载:http://xulongfa.iteye.com/blog/428674

先看个具体的例子:

Xml代码  收藏代码
  1. <resultMap id=”get-product-result” class=”com.ibatis.example.Product”>  
  2.         <result property=”id” column=”PRD_ID”/>  
  3.         <result property=”description” column=”PRD_DESCRIPTION”/>  
  4. </resultMap>  
  5. <statement id=”getProduct” resultMap=”get-product-result”>  
  6.         select * from PRODUCT  
  7. </statement>  

注意resultMap支持“select *”,并不要求定义ResultSet所有返回字段的映射。

在SQL Map框架中,Result Map是极其重要的组件。在执行查询Mapped Statement时,resultMap负责将结果集的列值映射成Java Bean的属性值。resultMap的结构如下:

Xml代码  收藏代码
  1. <resultMap id=”resultMapName” class=”some.domain.Class” [extends=”parent-resultMap”]>  
  2.       <result property=”propertyName” column=”COLUMN_NAME”  
  3.             [columnIndex=”1”]     
  4.             [javaType=”int”]     
  5.             [jdbcType=”NUMERIC”]  
  6.             [nullValue=”-999999”]  
  7.             [select=”someOtherStatement”]  
  8.       />  
  9.       <result ……/>  
  10.       <result ……/>  
  11.       <result ……/>  
  12. </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:

Xml代码  收藏代码
  1. <resultMap id="DemoResultMap" class="Hashtable">  
  2.        <result property="id" column="id"/>  
  3.        <result property="Children" column="id"      
  4.                    select="SELECT_Children"/>  
  5. </resultMap>  
  6.   
  7. <statements>  
  8.        <select id="SELECT_Children" resultClass="ChildrenObject">  
  9.              SELECT * FROM Children WHERE ParentID = #id#  
  10.        </select>  
  11. </statements>  
分享到:
评论

相关推荐

    ibatis实现原理解析

    Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,使得开发者能够将SQL语句与Java代码分离,从而更好地管理数据库操作。在本篇文章中,我们将深入解析Ibatis的实现原理,探讨其核心功能、...

    记一次Ibatis的意外发生.docx

    在IBatis中,ResultMapping的名称需要加上namespace,例如:&lt;resultMap id="xxxMap" class="xxx"&gt; &lt;result property="abc" resultMap="ns.yyyMap"/&gt; &lt;/resultMap&gt;。 3. IBatis的配置错误 在配置IBatis时,可能会...

    深入分析 iBATIS 框架之系统架构与映射原理

    **深入分析 iBATIS 框架之系统架构与映射原理** iBATIS 是一个优秀的持久层框架,它允许开发者将 SQL 语句与 Java 代码分离,从而简化了数据库访问层的开发工作。本篇文章将深入探讨 iBATIS 的核心系统架构以及其...

    Ibatis jar

    另外,Ibatis还支持ResultMap,用于将查询结果映射到Java对象。ResultMap不仅可以自动匹配列名与字段名,还可以处理复杂的一对多、多对一、一对一的关系映射。此外,Ibatis还提供了TypeHandler机制,用于自定义Java...

    ibatis源码,ibatis源码 ibatis源码 ibatis源码

    在`org.apache.ibatis.executor.resultset.ResultSetHandler`中,ResultMap被用来定义字段与Java对象属性的映射关系。ResultMap不仅支持简单的列名映射,还能处理复杂的一对多、一对一关系映射。 六、...

    iBATIS-DAO-2.3.4.726.rar_com.ibatis.dao_iBATIS dao 2_iBatis DAO_

    此外,iBATIS还提供了一些辅助工具,如`ParameterMap`用于管理SQL语句的输入参数,`ResultMap`用于处理查询结果的映射,以及`Cache`机制,用于缓存查询结果,提高系统性能。这些工具类使得开发者能够更方便地进行...

    ibatis实战之基础环境搭建(源码).zip

    在本教程中,我们将深入探讨如何搭建用于实战的iBatis基础环境,同时结合源码进行学习。iBatis是一个优秀的、开源的SQL映射框架,它能够将Java应用程序中的数据库操作与SQL语句分离,使得开发人员可以更加专注于业务...

    ibatis总结 ibatis ibatis ibatis ibatis

    Ibatis 是一款轻量级的Java持久层框架,它允许开发者将SQL语句与Java代码分离,从而使得数据库访问更加灵活、易于维护。本篇文章将深入探讨Ibatis的核心概念、最佳实践以及与其他框架如Struts和Spring的整合。 1. ...

    ibatis api,ibatis文档,ibatis说明文档

    6. ResultMap和ResultSetHandler:ResultMap定义了结果集的映射规则,而ResultSetHandler则将数据库查询的结果转换为Java对象。 7. Statement:代表了数据库的SQL语句,包括PreparedStatement(预编译SQL)和...

    ibatis api 帮助文档+IBATIS 开发文档

    **IBATIS API 帮助文档与IBATIS开发文档详解** IBATIS,一个由iBATIS公司开发的开源持久层框架,是Java世界中广泛使用的数据访问接口(DAO)工具。它允许开发者将SQL语句直接写在XML配置文件中,实现了SQL与Java...

    ibatis实战之一对多关联(源代码)

    在iBatis的映射文件中,我们需要为主表(一对一的一方)和从表(一对一的多方)分别创建`&lt;resultMap&gt;`。在主表的`&lt;resultMap&gt;`中,通过`&lt;collection&gt;`标签指定从表的映射信息,包括属性名、类型、SQL查询(通常用`...

    ibatis资料ibatis资料

    4. **了解MyBatis**: 虽然iBATIS已被MyBatis取代,但两者有很多相似之处。了解MyBatis的新特性,如注解支持和更强大的动态SQL,可以帮助你更好地迁移和升级项目。 5. **社区资源**: 利用互联网上的论坛、博客和问答...

    Ibatis入门例子,Ibatis教程

    例如,你可以通过使用`&lt;if&gt;`、`&lt;choose&gt;`等标签来编写条件语句,通过`&lt;resultMap&gt;`来定义复杂的对象关系映射。 学习Ibatis,不仅能够提高开发效率,还能使代码更加清晰、易于维护。随着对Ibatis的深入理解和实践,...

    ibatis教程 输入参数详解

    SqlSessionFactory是ibatis的核心组件之一,负责创建SqlSession实例。可以通过以下两种方式构建SqlSessionFactory: 1. **从XML构建**:使用`SqlSessionFactoryBuilder`类的`build()`方法,传入包含配置信息的XML...

    iBatis文档\ibatis.doc

    iBatis的核心功能之一就是对象关系映射(ORM)。它将数据库中的记录映射到Java对象,反之亦然。在XML映射文件中,你可以定义`resultMap`来描述字段与对象属性之间的对应关系。 ### iBatis 高级特性 #### 数据关联 ...

    ibatisDemo 入门源码

    4. 结果映射:通过`@ResultMap`注解或`&lt;resultMap&gt;`标签进行结果集映射。 六、IbatisDemo学习要点 1. 理解Ibatis的基本架构和工作原理。 2. 掌握SqlMapConfig.xml的配置,如数据源设置、事务管理等。 3. 学习Mapper...

    ibatis demo,ibatis例子,ibatis示例

    Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,使得开发者能够将SQL语句与Java代码分离,从而更好地管理数据库操作。Ibatis的出现,解决了传统JDBC中手动编写SQL和结果集映射的繁琐工作,...

    Ibatis 入门经典 实例

    2. 结果映射:使用 `&lt;resultMap&gt;` 定义结果集映射规则,可以进行复杂的列名和属性名映射,支持关联对象映射。 六、事务管理 Ibatis 支持编程式和声明式两种事务管理方式。编程式事务管理通过 `SqlSession` 的 begin...

    ibatis案例

    5. **结果映射(ResultMap)**:Ibatis的ResultMap用于处理复杂的查询结果,它可以映射多对一、一对多的关系,或者处理自定义类型转换等复杂情况。 6. **动态SQL**:Ibatis的动态SQL功能允许在XML配置文件中编写...

Global site tag (gtag.js) - Google Analytics