resultMap中id和result、collection和association有什么不同?

resultMap中id和result、collection和association有什么不同?

<resultMap id="rmGoodDetail" type="com.imooc.mybatis.entity.GoodDetail">
    <id property="gdId" column="gd_id"/>
    <result property="goodsId" column="goods_id"/>
    <association property="goods" column="goods_id" select="goods.selectById"/>
</resultMap>

我自己试验的时候,发现<id>和<result>标签是可以混用的。

属性  映射  普通字段  也能用<id>标签。

属性  映射  主键字段  也能用<result>标签。

同理,collection和association也是可以混用的,返回的结果都是一样的。

http://img1.sycdn.imooc.com//climg/5f0f0fb8086e140115000845.jpg

http://img1.sycdn.imooc.com//climg/5f0f0fb80888d6ca15000845.jpg


既然返回结果一样,为什么还要区分id和result、collection和association?

他们有什么不同?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,这些标签在实际功能上还是有一些区别的,比如:

    1、id:该封装规则的唯一标识,作为唯一标识,可以在使用缓存后,将这个唯一标识来作为区分的内容,但是如果将所有字段都标识为id,此时是会出现混乱的情况的。

    2、如果实体类中是属性是集合set或者list ,这时需要用collection,这样也便于集合属性的赋值。

现阶段先了解这些内容,并遵循这个规则就可以。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

好帮手慕小班 2020-07-16 12:15:39

同学你好,1、<resultMap>是Maybatis的结果集封装,id:该封装规则的唯一标识,也就是说id用来标识哪个字段是主键。 而result是非主键的映射,这是resultMap中的语法规则,我们需要遵循这个语法规范,便于别人对代码的可读性。

    2、一般情况下参考如下来理解:

    collection和association都是 为关联关系,collection 是实现一对多的关系,  association是实现一对一的关系。

collection:在进行一对多查询时,需要使用collection标签来关联多的一边,而association则是实现一对一的关联查询,通过外键(指定参数)完成查询,并将查询结果封装到指定的类型中。

如上所示,在resultMap标签中,需要遵循这样语法规范。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 慕丝1539783 #1
    也就是说,id和result、collection和association其实功能上没有区别,只是为了程序员阅读方便才区分出两个不同标签? 其实我想问的就是这两种标签在实际功能上有没有区别?
    2020-07-16 12:41:43
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师