ibatis中的resultMap作用
我刚开是接触MyBatis,看到sqlmap.xml中写了一个"ResultMap"<resultMapid="wpResult"class="wp"><resultpr...
我刚开是接触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<对象>接收,发现也可以返回。请问这两种方式的写法有什么区别呢 ?以及我要注意哪些 ? 展开
<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<对象>接收,发现也可以返回。请问这两种方式的写法有什么区别呢 ?以及我要注意哪些 ? 展开
2个回答
展开全部
resultMap
就是你自定义的一个映射关系啊
resultType就是 mybatis会自己通过反射 根据字段名设置到对应的实例中的属性。
而且resultMap可以实现一种功能
就是当你是1对多 这种多张表查询的时候 你没办法 通过表连接来实现一个集合设置到一个实例里,但是通过resultMap里可以做到 根据关联的字段 查询到一个集合 然后吧集合设置到 那个对象的对应属性。
就是你自定义的一个映射关系啊
resultType就是 mybatis会自己通过反射 根据字段名设置到对应的实例中的属性。
而且resultMap可以实现一种功能
就是当你是1对多 这种多张表查询的时候 你没办法 通过表连接来实现一个集合设置到一个实例里,但是通过resultMap里可以做到 根据关联的字段 查询到一个集合 然后吧集合设置到 那个对象的对应属性。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询