问题:之前接触过Ibatis的使用,在做一对多的时候,一般都是手动去填充,非自动让ibatis去填充数据。
下面就用ibatis的自动填充功能来实现。
关键使用到collection 标签下的select标签。
现在有活动表,讨论表
一个活动对应多条讨论,一条讨论属于一个活动
其中活动表中的activityId与讨论表中的activityId对应,怎么用ibatis查询一条活动的时候,同时将讨论表的数据装进domain中
ActivitysWithBLOBs.java
-
1 privateInteger activityid; 2 privateList<Discuss> discusslist;//一对多
Discuss.java
-
1 privateInteger id; 2 privateInteger activityid; 3 privateInteger userid; 4 privateString time; 5 privateString content;
mapper.xml中的配置如下
-
1 <resultMaptype="com.travel.model.ActivitysWithBLOBs"id="discussActyWithBLOBs"extends="ResultMapWithBLOBs"> 2 <collectionproperty="discusslist"column="activityId"javaType="ArrayList"ofType="com.travel.model.Discuss"select="getDiscussByActId"/> 3 </resultMap> 4 <selectid="getDiscussByActId"resultType="com.travel.model.Discuss"parameterType="java.lang.Integer"> 5 <![CDATA[ 6 SELECT 7 discuss.id, 8 discuss.content, 9 discuss.time, 10 discuss.userId, 11 discuss.activityid 12 FROM 13 discuss 14 WHERE 15 discuss.activityId = #{activityId} 16 ]]> 17 </select>
注意:
- collection中的column="activityId"作为select="getDiscussByActId"的参数,在getDiscussByActId中使用为#{activityId}
- collection中javaType="ArrayList"或者是javaType="list" 可以不用配置,ofType="com.travel.model.Discuss"必须配置,并且为oftype
- select中resultType="com.travel.model.Discuss"parameterType="java.lang.Integer"
时间: 2024-10-26 22:13:50