Springboot使用Mybits处理数据库一对多个人解决

本文介绍了一种使用MyBatis进行多表关联查询的方法,并详细展示了如何通过XML配置实现商店表与会员卡表的关联查询,同时提供了具体的实体类设计与查询代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先我们有两个数据库表:

商店表:

shop_idlong
shop_namevarchar
shop_addressvarchar

 

会员卡表:

 

card_idlong
shop_idlong
card_namevarchar

这个时候,由于每个商店拥有多张会员卡,然后我们要取数据,里面是每个商店对应商店内会员卡。大致如下:

[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 cardNames

          from shop a left join card b on a.shop_id = b.shop_id
        where b.shop_id = #{shopId}
 </select>

</mapper>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值