ibatis中的resultMap作用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ibatis中的resultMap作用相关的知识,希望对你有一定的参考价值。

我刚开是接触MyBatis,看到sqlmap.xml中 写了一个"ResultMap"
<resultMap id="wpResult" class="wp"> <result property="id" column="id"/> <result property="name" column="name"/> <result property="wp" column="wp"/> <result property="flag" column="flag"/> </resultMap>
查询的时候,如果是查询全部:
<select id="getAll" resultMap="wpResult">
select * from WP
</select>
查询全部结果返回的是上面定义的resultMap中的值。我有个疑问就是:
如果是返回多条数据,就必须要用到resultMap中定义的值吗?
我自己测试定义了一个<Alias>,查询全部的时候直接返回的这个别名,dao实现类里用List<对象>接收,发现也可以返回。请问这两种方式的写法有什么区别呢 ?以及我要注意哪些 ?

参考技术A resultMap
就是你自定义的一个映射关系啊
resultType就是 mybatis会自己通过反射 根据字段名设置到对应的实例中的属性。

而且resultMap可以实现一种功能
就是当你是1对多 这种多张表查询的时候 你没办法 通过表连接来实现一个集合设置到一个实例里,但是通过resultMap里可以做到 根据关联的字段 查询到一个集合 然后吧集合设置到 那个对象的对应属性。本回答被提问者和网友采纳
参考技术B   
  ibatis中resultMap的用法总结:
  1、resultMap属性描述(参考http://tech.ddvip.com/2009-07/1248536330126392.html)
  columnIndex属性提供了我们将数据集的第几个下标字段映射到指定的数据对象属性的方案,但是这种方式应该尽量的少用,你会发现这对我们以后的维护和可读性会产生很大的副作用。
  dbType属性明确指出这个字段对应的数据库的类型,大多数情况我很少会用到。
  type属性则明确指出这个字段将对应的数据对象属性的数据类型,通常如果你想保证类型安全的话,设置这个属性是很必要的。
  resultMapping属性则稍微复杂一些,它是用在一种场景下,如果一个数据类的属性本身不是基元数据类型,而是一个复杂数据类型的话,那我们就不可能很简单地给它一个简单的result元素就了事了,还必须给他一个完整的resultMap。而resultMapping属性就是为了完成这个功能而存在的。它的属性值是一个已存在的resultMap的ID。
  nullValue属性就没什么好讲的了,它是给出当这个字段的值为null的时候,它的默认值是多少。
  select属性同resultMapping一样比较复杂一样,先说一下它的属性值必须是一个返回数据集合的查询语句的ID,能配置这个属性的数据类属性可以是一个基元类型,复合类型,也可以是一个包括多条数据的集合类型,这些类型都行,没有问题的。它的一处重要的存在意义就在于描述不同表之间的关系问题,通过本次的查询,你想不通过join的手段从另一个表查询相关字段的时候,你就可以使用select属性。
  2、resultMap继承
  <resultMap id="BaseResultMap" class="com.xxx.DClass" >
<result column="ID" property="id" jdbcType="DECIMAL" />
</resultMap>
  <resultMap id="BaseResultMapAndTaskId" class="com.xxx.DClass" extends="BaseResultMap">
<result column="TASK_ID" property="taskId" jdbcType="VARCHAR" />
</resultMap>

各位大拿进来看看,关于ibatis的resultmap找不到的问题

当XML中不配select语句的时候,代码的增删改的时候都可以跑,但是一旦加入查询语句,代码就会出现找不到resultmap的问题。。。。。而且我的personmapper.xml文件如果中间加横线变成person-mapper.xml那么这个xml文件也会获取不到!!!!!!谁能解答呢,小弟万分感谢

你把resultMap 的值 改为“personResultMap” 试试 参考技术A XML中的SELECT的字符串,使用 <![CDATA[ ]] 括起来 参考技术B 不知道啊 你的问题太深奥了

以上是关于ibatis中的resultMap作用的主要内容,如果未能解决你的问题,请参考以下文章

各位大拿进来看看,关于ibatis的resultmap找不到的问题

ibatis中的resultClass,parameterClass,resultMap,resultType的使用与区别

ibatis/mybatis属性三:resultMap和resultClass/resultType

完美解决Could not process result for mapping: ResultMapping{property=‘null‘, column=‘xxx‘, javaType=

完美解决Could not process result for mapping: ResultMapping{property=‘null‘, column=‘xxx‘, javaType=

完美解决Could not process result for mapping: ResultMapping{property=‘null‘, column=‘xxx‘, javaType=