首先我们有两个数据库表:
商店表:
shop_id | long |
shop_name | varchar |
shop_address | varchar |
会员卡表:
card_id | long |
shop_id | long |
card_name | varchar |
这个时候,由于每个商店拥有多张会员卡,然后我们要取数据,里面是每个商店对应商店内会员卡。大致如下:
[Shop(shopId=1,shopName=shopName,cards[Card(cardId=1,cardName=cardName),Card(cardId=2,cardName=cardN)])]
entity层shop设计如下:
public class Shop {
//商店ID
private Integer shopId;
//商店名
private String shopName;
//会员卡
List<Card> cards;
}
card设计如下:
public class Card {
//会员卡ID
private Integer cardId;
//会员卡名
private String cardName;
//会员所属商店
private Shop shop;
}
主要内容看下面xml即可:
<mapper namespace="com.yingxun.gym.dao.ShopDao">
<resultMap type="com.yingxun.gym.entity.Shop" id="shopListMap">
<id column="shop_id" property="shopId" />
<result column="shop_name" property="shopName" />
<collection property="cards" javaType="ArrayList" ofType="com.yingxun.gym.entity.Card">
<id column="cardIds" property="cardId"/><!-- 这里的column对应的是下面查询的别名,而不是表字段名 -->
<result column="cardNames" property="cardName"/><!-- property对应Card实体类中的属性名 -->
</collection>
</resultMap><select id="queryShopCard" resultMap="shopListMap">
select a.shop_id,a.shop_name,b.card_id as cardIds,b.card_name as cardNamesfrom shop a left join card b on a.shop_id = b.shop_id
where b.shop_id = #{shopId}
</select></mapper>