Ibatis中返回一对多结果集的解决方法

之前遇到过类似的问题,今天记录下。版本比较低的文档中(具体几的文档忘记了..)记得有介绍在<resultMap>下<result>标签使用 select属性。例如:

<resultMap class="xxx" id="xx">
    <result property="xxx" column="xxx" select="xxSQL" />
</resultMap>

但是这种解决方法不是很好。如果在Bean中的属性有集合类,可以使用以下的方式

<sqlMap namespace="xxxSQL">
    <typeAlias alias="sysUser"
        type="xx.SysUser" />
    <typeAlias alias="userCommunity"
        type="xx.UserCommunity" />
    
    <resultMap class="userCommunity" id="comm" >
        <result property="communityCode" column="COMMUNITY_CODE"/>
        <result property="communityName" column="MC" />
    </resultMap>
    <resultMap class="sysUser" id="sysCom" groupBy="loginId">
        <result property="loginId" column="LOGIN_ID"/>
        <result property="userCommunityList" resultMap="xxxSQL.comm"/>
    </resultMap>
    
    <select id="getSysUserRole" resultMap="sysCom">
        SELECT S.LOGIN_ID, U.COMMUNITY_CODE, C.MC
         FROM SYS_USER S, USER_COMMUNITY U, ccc C
        WHERE S.LOGIN_ID = U.POLICE_NO
        AND u.community_code = c.dm
        ORDER BY S.LOGIN_ID 
    </select>
</sqlMap>    

需要注意的是,在id='sysCom'的<result property="userCommunityList" resultMap="xxxSQL.comm" />中一定要指定SQL的namespace。

-------------------------------------分割线----------未完待补充---------------------

转载于:https://www.cnblogs.com/GYoungBean/archive/2012/12/12/2814290.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值