ibatis resultMap 的用法

先看个具体的例子:

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的结构如下:

 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元素的名称。

先说一下它的属性值必须是一个返回数据集合的查询语句的id,能配置这个属性的数据类属性可以是一个基元类型,复合类型,也可以是一个包括多条数据的集合类型,这些类型都行,没有问题的。它的一处重要的存在意义就在于描述不同表之间的关系问题,通过本次的查询,你想不通过join的手段从另一个表查询相关字段的时候,你就可以使用select属性。

 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> 
时间: 2024-11-07 20:03:27

ibatis resultMap 的用法的相关文章

Ibatis collect select用法详解

问题:之前接触过Ibatis的使用,在做一对多的时候,一般都是手动去填充,非自动让ibatis去填充数据. 下面就用ibatis的自动填充功能来实现. 关键使用到collection 标签下的select标签. 现在有活动表,讨论表 一个活动对应多条讨论,一条讨论属于一个活动 其中活动表中的activityId与讨论表中的activityId对应,怎么用ibatis查询一条活动的时候,同时将讨论表的数据装进domain中 ActivitysWithBLOBs.java 1 privateInte

深入浅出Mybatis系列(八)---mapper映射文件配置之select、resultMap good

上篇<深入浅出Mybatis系列(七)---mapper映射文件配置之insert.update.delete>介绍了insert.update.delete的用法,本篇将介绍select.resultMap的用法.select无疑是我们最常用,也是最复杂的,mybatis通过resultMap能帮助我们很好地进行高级映射.下面就开始看看select 以及 resultMap的用法: 先看select的配置吧: <select <!-- 1. id (必须配置) id是命名空间中的

mapper映射文件配置之select、resultMap(转载)

原文地址:http://www.cnblogs.com/dongying/p/4073259.html 先看select的配置吧: <select         <!-- 1. id (必须配置)         id是命名空间中的唯一标识符,可被用来代表这条语句.         一个命名空间(namespace) 对应一个dao接口,         这个id也应该对应dao里面的某个方法(相当于方法的实现),因此id 应该与方法名一致 -->        id="se

深入浅出Mybatis系列(八)---mapper映射文件配置之select、resultMap

上篇<深入浅出Mybatis系列(七)---mapper映射文件配置之insert.update.delete>介绍了insert.update.delete的用法,本篇将介绍select.resultMap的用法.select无疑是我们最常用,也是最复杂的,mybatis通过resultMap能帮助我们很好地进行高级映射.下面就开始看看select 以及 resultMap的用法: 先看select的配置吧: <select <!-- 1. id (必须配置) id是命名空间中的

深入浅出Mybatis系列(八)---mapper映射文件配置之select、resultMap[转]

上篇<深入浅出Mybatis系列(七)---mapper映射文件配置之insert.update.delete>介绍了insert.update.delete的用法,本篇将介绍select.resultMap的用法.select无疑是我们最常用,也是最复杂的,mybatis通过resultMap能帮助我们很好地进行高级映射.下面就开始看看select 以及 resultMap的用法: 先看select的配置吧: <select <!-- 1. id (必须配置) id是命名空间中的

Mapper映射语句高阶应用——ResultMap

resultMap 元素是 MyBatis 中最重要最强大的元素.它就是让你远离 90% 的需要从结果 集中取出数据的 JDBC 代码的那个东西 , 而且在一些情形下允许你做一些 JDBC 不支持的事 情. 事实上 , 编写相似于对复杂语句联合映射这些等同的代码, 也许可以跨过上千行的代码. ResultMap 的设计就是简单语句不需要明确的结果映射 , 而很多复杂语句确实需要描述它们 的关系. 我们通过一个连续的例子,来逐步讲解 ReusltMap . 要进行 ResultMap 的实验,先设

java 执行sql脚本的3种方式 (ant,ibatis,ScriptRunner)

package com.unmi; import java.io.*; import org.apache.tools.ant.*; import org.apache.tools.ant.taskdefs.*; import org.apache.tools.ant.types.*; /** * 调用 ant.jar 的 SQLExec 执行 SQL 脚本文件 * @author Unmi */ public class AntExecSql { /** * @param args */ pu

Mybatis:resultMap的使用总结

Mybatis的介绍以及使用:http://www.mybatis.org/mybatis-3/zh/index.html resultMap是Mybatis最强大的元素,它可以将查询到的复杂数据(比如查询到几个表中数据)映射到一个结果集当中. resultMap包含的元素: <!--column不做限制,可以为任意表的字段,而property须为type 定义的pojo属性--> <resultMap id="唯一的标识" type="映射的pojo对象&

mybatis大框架

MyBatis   开源的数据持久化层框架 实体类与SQL语句之间建立映射关系 一:MyBatis前身是IBatis,本是Apache的一个开源的项目, 基于SQL语法,简单易学 ,是耦合度降低,方便程序调式 二:搭建Mybatis的开发步骤: a:下载mybatis-3.3.3.jar包并导入工程 b.编写MyBatis核心配置文件(configuration.xml) c.创建实体类-POJO d.DAO层-SQL映射文件(mapper.xml) e.创建测试类 读取全局配置文件mybati