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