店铺编辑
首先获取店铺的信息,然后在此基础上进行改动
编写店铺查询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>