When mybatis collection nests query statements, only one possible problem is queried for multiple pieces of data.

code show as below:

<resultMap id="result_SwcRpsstmr_Map" type="cc.geoworks.wscs.web.entity.SwcRpsstmr">
    <id column="SPID" property="spid" />
    <result column="RFCD" property="rfcd" />
    <result column="OBTM" property="obtm" />
</resultMap>

<resultMap id="SwcRpsstmrMap" type="cc.geoworks.wscs.web.entity.SwcRpsstmr" extends="result_SwcRpsstmr_Map">
    <collection property="rpssList" javaType="ArrayList" ofType="cc.geoworks.wscs.web.entity.SwcRpss" columnPrefix="RPSS_" resultMap="rpssMap"/>
</resultMap>

<resultMap id="rpssMap" type="cc.geoworks.wscs.web.entity.SwcRpss">
    <id property="rpcd" column="RPCD"/> //必须为唯一值
    <result property="rpnm" column="RPNM"/>
    <result property="spid" column="SPID"/>
    <collection property="tanks" javaType="ArrayList" ofType="cc.geoworks.wscs.web.entity.SwcRpsswdr" columnPrefix="TK_" resultMap="SwcRpsswdrBbsMap"/>
</resultMap>

<resultMap id="SwcRpsswdrBbsMap" type="cc.geoworks.wscs.web.entity.SwcRpsswdr">
    <id column="SPWID" property="spwid" />    //此处为问题所在,必须为唯一值
    <result column="SPID" property="spid" />
    <result column="NT" property="nt" />
    <result column="MODITIME" property="moditime" />
</resultMap>

<sql id="rpss_column_list">
    d.RPCD  AS RPSS_RPCD,//此处 前缀与SwcRpsstmrMap里columnprefix一致  
    b.RPNM  AS RPSS_RPNM,
    m.SPID  AS RPSS_SPID
</sql>
<sql id="rpsswdr_column_list">
    t.SPWID AS RPSS_TK_SPWID,  //此处的前缀与SwcRpsstmrMap、rpssMap 里的columnprefix一致
    m.SPID  AS RPSS_TK_SPID,
    d.nt  AS RPSS_TK_NT,
</sql>
<select id="findList" parameterType="cc.geoworks.wscs.web.common.Assist" resultMap="SwcRpsstmrMap">
    SELECT
    <include refid="rpss_column_list" />
    <include refid="rpsswdr_column_list" />
    FROM
    swc_rpsstm_r m
    INNER JOIN table1 d ON m.SPID = d.SPID
    INNER JOIN table2 t ON t.SPWID = d.SPWID
    INNER JOIN table3 b ON b.RPCD = d.RPCD

Guess you like

Origin blog.csdn.net/luwei_cool/article/details/117471380