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
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis自连接三级联动和resultMap三级映射是一种常见的数据查询和映射方式。下面我来解释一下。 首先,自连接三级联动是指在数据库中,存在一个表,其中的某些字段关联到该表的自身字段。通常情况下,我们需要使用连续的JOIN语句来实现多级联动查询。在MyBatis中,可以使用XML配置文件或注解来定义SQL语句,然后使用resultMap进行结果的映射。 在XML配置文件中,可以使用<resultMap>元素来定义映射关系。对于自连接的情况,可以使用嵌套的<association>或<collection>元素来表示关联关系。例如: ```xml <resultMap id="userMap" type="User"> <id property="id" column="id" /> <result property="name" column="name" /> <association property="manager" javaType="User"> <id property="id" column="manager_id" /> <result property="name" column="manager_name" /> <collection property="subordinates" ofType="User"> <id property="id" column="subordinate_id" /> <result property="name" column="subordinate_name" /> ... </collection> </association> </resultMap> ``` 上述代码中,定义了一个名为userMapresultMap,映射了User对象及其关联的manager和subordinates字段。 在实际查询时,可以使用嵌套的SELECT语句或连续的JOIN语句来实现自连接的多级联动查询。例如: ```xml <select id="getUserWithManagerAndSubordinates" resultMap="userMap"> SELECT u.id, u.name, m.id AS manager_id, m.name AS manager_name, s.id AS subordinate_id, s.name AS subordinate_name FROM user u LEFT JOIN user m ON u.manager_id = m.id LEFT JOIN user s ON u.id = s.manager_id WHERE u.id = #{id} </select> ``` 上述代码中,使用了连续的LEFT JOIN语句来查询用户及其关联的上级经理和下级员工信息。 通过以上的配置和查询,就可以实现MyBatis中的自连接三级联动和resultMap三级映射。希望能对你有所帮助!如果还有其他问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值