ibatis resultMap 的用法
先看个具体的例子:
<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元素的名称。
先说一下它的属性值必须是一个返回数据集合的查询语句的id,能配置这个属性的数据类属性可以是一个基元类型,复合类型,也可以是一个包括多条数据的集合类型,这些类型都行,没有问题的。它的一处重要的存在意义就在于描述不同表之间的关系问题,通过本次的查询,你想不通过join的手段从另一个表查询相关字段的时候,你就可以使用select属性。
<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 resultMap 的用法的更多相关文章
- Mybatis 系列8-结合源码解析select、resultMap的用法
[Mybatis 系列10-结合源码解析mybatis 执行流程] [Mybatis 系列9-强大的动态sql 语句] [Mybatis 系列8-结合源码解析select.resultMap的用法] ...
- ibatis resultMap 结果集映射
1.结果集映射 就是将返回的记录,逐个字段映射到java对象上:如果数据库字段与java对象的成员变量名对应的话,则使用resultClas即可 2.实现 结合 ibatis初探这篇文章中提到的pro ...
- Ibatis collect select用法详解
问题:之前接触过Ibatis的使用,在做一对多的时候,一般都是手动去填充,非自动让ibatis去填充数据. 下面就用ibatis的自动填充功能来实现. 关键使用到collection 标签下的sele ...
- iBatis第三章:iBatis的基本用法
iBatis 在DAO层的用法很基础,和一般 JDBC 用法没太多的不同之处,主要是实现数据的持久化.它的优势是用法比较灵活,可以根据业务需要,写出适应需要的sql,其使用简单,只要会使用sql,就能 ...
- ibatis dynamic的用法
<select id="idididid" resultClass="java.uitl.HashMap" parameterClass="ja ...
- Mybatis resultMap灵活用法(使用子查询)
### 背景查询广州每个景点的总流量,和每个景点每日流量 #### 数据表 t_广州|唯一标识id|地点place|流量counts|日期date||:---:|:---:|:---:|:---:|| ...
- resultMap的用法以及关联结果集映射
resultType resultType可以把查询结果封装到pojo类型中,但必须pojo类的属性名和查询到的数据库表的字段名一致. 如果sql查询到的字段与pojo的属性名不一致,则需要使用res ...
- iBatis resultMap报错 nullValue完美解决
http://blog.csdn.net/liguohuaty/article/details/4038437
- ibatis in的用法
<dynamic-mapped-statement name="queryLabelservicecodeLogSize" result-class="java.l ...
随机推荐
- hadoop native
http://blog.csdn.net/benben85/article/details/4161134 http://stackoverflow.com/questions/19943766/ha ...
- DB9 公头母头引脚定义及连接、封装
DB9 公头母头引脚定义及连接.封装 转自:http://blog.csdn.net/yangshuodianzi/article/details/8997478 1.实物及引脚简介 在做开发的时候经 ...
- 转 Oracle 12c 使用scott等普通用户的方法
一.前言 最近电脑上安装了oracle 12c数据库,想体验下新特性.安装完后,便像11g一样在dos窗口进行下面的操作: SQL*Plus: Release 12.1.0.2.0 Productio ...
- java模式:模板模式的简单理解
1.模板模式就是用虚类作为基类将几个要执行差不多操作中相同的部分提取出来,不同的部分各自实现! 2.下面给出简单栗子: 我要进行的操作是将大象和狐狸放入冰箱,放入大象和狐狸有相同的步骤:开冰箱和关冰箱 ...
- 页面开发辅助类—HtmlHelper初步了解
1.1 有失必有得 在ASP.Net MVC中微软并没有提供类似服务器端控件那种开发方式,毕竟微软的MVC就是传统的请求处理响应的回归.所以抛弃之前的那种事件响应的模型,抛弃服务器端控件也理所当然. ...
- Hibernate 系列教程16-二级缓存
pom.xml <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate- ...
- gradle 构建spring源码时候报错
这是使用jdk1.7报的错,我卸载1.7后使用1.8 ,就可以了
- android笔记20170116
封装http请求类,利用回调机制获取返回值 public interface HttpCallbackListener { void onFinish(String response); void o ...
- cocos2d CCLOG格式符号表
使用示例: CCLOG(); CCLOG(, 650000L); CCLOG(); CCLOG(); CCLOG(, , , , ); CCLOG("Floats: %4.2f %.0e % ...
- JavaScript(四)---- 函数
函数主要用来封装具体的功能代码. 函数是由这样的方式进行声明的:关键字 function.函数名.一组参数,以及置于括号中的待执行代码. 格式: function 函数名(形参列表){ ...