Mybatis: *Mapper.xml中<association 和<collection区别

在MyBatis中,和是用于处理对象关系映射(ORM)时非常重要的两个标签,它们的主要区别在于它们各自映射的Java类型以及它们在数据库查询结果中代表的集合类型。

标签用于处理一对一(One-To-One)的关系映射。当你有一个对象包含另一个对象作为它的属性时,你会使用来映射这个关系。例如,如果你有一个User类,其中包含一个Address对象作为属性,那么在查询User对象时,你也想同时获取该用户的地址信息,这时就可以使用来映射Address对象。

<resultMap id="userResultMap" type="User">
    <id property="id" column="user_id" />
    <result property="username" column="username" />
    <association property="address" javaType="Address">
        <id property="id" column="address_id" />
        <result property="street" column="street" />
        <result property="city" column="city" />
    </association>
</resultMap>
<collection>

标签用于处理一对多(One-To-Many)的关系映射。当你有一个对象包含另一个对象的集合作为它的属性时,你会使用来映射这个关系。例如,如果你有一个User类,其中包含一个List对象集合作为属性,那么在查询User对象时,你也想同时获取该用户的所有订单信息,这时就可以使用来映射订单集合。

<resultMap id="userResultMap" type="User">
    <id property="id" column="user_id" />
    <result property="username" column="username" />
    <collection property="orders" ofType="Order">
        <id property="id" column="order_id" />
        <result property="orderNumber" column="order_number" />
        <result property="orderDate" column="order_date" />
    </collection>
</resultMap>

总结
association:用于映射一对一的关系,如一个对象包含另一个对象作为属性。
collection:用于映射一对多的关系,如一个对象包含另一个对象的集合作为属性。

在使用这两个标签时,你需要根据实际的业务需求和数据库表之间的关系来选择使用哪一个。同时,注意指定javaType(对于)和ofType(对于)属性来明确映射的Java类型,以确保MyBatis能够正确地处理这些关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值