resultmap三层级联嵌套

mybatis实现resultmap三层嵌套

  • 在Myabtis中,直接写resultmap的三层级联,编译器会报错。为了解决这一问题,Mybatis框架提供了实现的方式,记录一下,方便有需要的小伙伴可以葫芦画瓢。

    • resultMap结构
    	 <resultMap id="findColList" type="com.study.domain.ColIndus">
            <result property="industries_code" column="industries_code"/>
            <result property="industries" column="industries"/>
            <result property="daySale_1" column="daySale_1"/>
            <result property="monthSale_1" column="monthSale_1"/>
            <collection property="colSecs" resultMap="getSec_room"/>
        </resultMap>
        <resultMap id="getSec_room" type="com.study.domain.ColSec">
            <result property="secondLevel_code" column="secondLevel_code"/>
            <result property="secondLevel" column="secondLevel"/>
            <result property="daySale_2" column="daySale_2"/>
            <result property="monthSale_2" column="monthSale_2"/>
            <collection property="colRooms" column="colRooms" ofType="com.study.domain.ColRoom">
                <result property="saleRoom_code" column="saleRoom_code"/>
                <result property="saleRoom" column="saleRoom"/>
                <result property="daySale_3" column="daySale_3"/>
                <result property="monthSale_3" column="monthSale_3"/>
            </collection>
        </resultMap>
    

    简单说明:第一个id为findColList的resultMap关联id为getSec_room的result

    <collection property="colSecs" resultMap="getSec_room"/>
    
    • 对应的实体类
    public class ColIndus implements Serializable {
        private String industries_code;
        private String industries;
        private float daySale_1;
        private float monthSale_1;
        private List<ColSec> colSecs;
        //get&&set方法
    }
    public class ColSec implements Serializable {
        private String secondLevel_code;
        private String secondLevel;
        private float daySale_2;
        private float monthSale_2;
        private List<ColRoom> colRooms;
        //get&&set方法
    }
    public class ColRoom implements Serializable {
        private String saleRoom_code;
        private String saleRoom;
        private float daySale_3;
        private float monthSale_3;
        //get&&set方法
    }
    
    • 对应的sql
    <select id="findAll" resultMap="findColList" parameterType="java.lang.String">
            SELECT
    	    industries_code,
    	    industries,
    	    secondLevel_code,
    	    secondLevel,
    	    saleRoom_code,
    	    saleRoom,
    	    SUM( achive ) AS monthSale_3
            FROM
    	        basechart
            WHERE
    	        actionTime &lt;= #{endTime}
                 AND actionTime &gt;= #{MO}
            GROUP BY
    	        saleRoom_code
    </select>
    
    • 在Dao层用List结果类型就可以了
    List<ColIndus> findAll(@Param("MO") String MO, @Param("endTime")String  endTime);
    

    至此,一个高大上的三层级联就出来了

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值