shop--7.店铺编辑和列表--联合查询的结果集封装ResultMap association collection

店铺编辑

首先获取店铺的信息,然后在此基础上进行改动

编写店铺查询queryByShopId(long shopId)

因为在查询店铺时,shop表中只含有

这些PersonInfo,Area,ShopCategory的id,但是需要显示的是所有者的名字,区域的名字和店铺分类的名字,所以,需要进行联合查询

 而且Shop类中

也是这些类,而不是它们的id

在进行联合查询时,接收联合查询的返回值不能这样单纯的定义为Shop,而要将信息封装为一个ResultMap 

使用association定义关联的单个对象的封装规则;

JavaEE——Mybatis(5)--resultMap自定义结果集封装

ResultMap定义

<!--使用ResultMap自定义结果集封装-->
    <resultMap id="shopMap" type="com.shop.bean.Shop">
        <id column="shop_id" property="shopId"/>
        <result column="shop_name" property="shopName"/>
        <result column="shop_desc" property="shopDesc"/>
        <result column="shop_addr" property="shopAddr"/>
        <result column="phone" property="phone"/>
        <result column="shop_img" property="shopImg"/>
        <result column="priority" property="priority"/>
        <result column="create_time" property="createTime"/>
        <result column="last_edit_time" property="lastEditTime"/>
        <result column="status" property="status"/>
        <result column="advice" property="advice"/>
        <association property="area" column="area_id" javaType="com.shop.bean.Area">
            <id column="area_id" property="areaId"/>
            <result column="area_name" property="areaName"/>
        </association>
        <association property="owner" column="owner_id" javaType="com.shop.bean.PersonInfo">
            <id column="user_id" property="userId"/>
            <result column="user_name" property="userName"/>
        </association>
        <association property="shopCategory" column="shop_category_id" javaType="com.shop.bean.ShopCategory">
            <id column="shop_category_id" property="shopCategoryId"/>
            <result column="shop_category_name" property="shopCategoryName"/>
        </association>
    </resultMap>

  

SQL语句

<!--public Shop queryByShopId(long shopId);-->
    <select id="queryByShopId" parameterType="java.lang.Long" resultMap="shopMap">
        SELECT
        s.shop_id,
        s.shop_name,
        s.shop_desc,
        s.shop_addr,
        s.phone,
        s.shop_img,
        s.priority,
        s.create_time,
        s.last_edit_time,
        s.status,
        s.advice,
        a.area_id,
        a.area_name,
        sc.shop_category_id,
        sc.shop_category_name
        FROM
        shop s,
        area a,
        shop_category sc
        WHERE
        s.area_id=a.area_id
        AND
        s.shop_category_id=sc.shop_category_id
        AND
        s.shop_id=#{shopId}
    </select>

  

  

原文地址:https://www.cnblogs.com/SkyeAngel/p/8888820.html