• Mybatis中 collection 和 association 标签 的区别


    <collection><association>MyBatis 中用于定义映射关系的标签,它们的区别如下:

    1. 目标对象类型:

      • 用于表示集合属性,即一个属性对应多个关联对象。
      • 用于表示关联属性,即一个属性对应一个关联对象。
    2. 关联关系处理:

      • 用于处理一对多或多对多的关联关系,其中集合属性将包含对应的关联对象的集合。
      • 用于处理一对一或多对一的关联关系,其中关联属性将包含对应的关联对象。
    3. SQL 查询方式:

      • 通常需要执行额外的 SQL 查询来获取关联对象的数据,通常需要使用 select 子句指定查询语句。
      • 通常会在关联对象的查询语句中使用 join 操作,将关联对象的数据与当前对象的数据一起查询出来。
    4. 映射方式:

      • 通常在结果映射中使用嵌套的 定义,以映射关联对象的属性。
      • 通常在结果映射中使用 标签定义,以映射关联对象的属性。

    总结起来, 用于表示一对多或多对多的集合属性,并需要执行额外的 SQL 查询来获取关联对象的数据,而 用于表示一对一或多对一的关联属性,并使用 join 操作将关联对象的数据与当前对象一起查询出来。

    示例:

    拓展:

    1. <resultMap id="CommentRecursionMap" type="com.ly.cloud.vo.app.HdplTreeVO">
    2. <id column="pkid" property="pkid"/>
    3. <result column="xsid" property="xsid"/>
    4. <result column="xm" property="xm"/>
    5. <result column="plid" property="plid"/>
    6. <result column="hfplid" property="hfplid"/>
    7. <result column="fjid" property="fjid"/>
    8. <collection property="replyData" select="selectCommentRecursionDataByPlid" column="{plid=pkid}"/>
    9. </resultMap>
    10. <!--先查询自主评论的数据,在递归查询回复评论数据-->
    11. <select id="selectCommentRecursionDataByHdid" resultMap="CommentRecursionMap">
    12. select
    13. t.pkid,
    14. t.plid,
    15. from zhxg_gqt_dekt_hdpl t
    16. left join zhxg_gqt_dekt_grxx grxx on grxx.yhid = t.xsid
    17. where t.pllx = '1' and t.hdid = #{hdid}
    18. </select>
    19. <!--配合selectCommentRecursionDataByHdid使用-->
    20. <select id="selectCommentRecursionDataByPlid" resultMap="CommentRecursionMap">
    21. select
    22. t.pkid,
    23. t.plid
    24. from zhxg_gqt_dekt_hdpl t
    25. left join zhxg_gqt_dekt_grxx grxx on grxx.yhid = t.xsid
    26. where nvl(t.hfplid,t.plid) = #{plid}
    27. </select>

  • 相关阅读:
    【zookeeper】zk的ZAB原子广播协议
    【C语言】归并排序
    IDEA启动项目显示端口占用问题
    8年开发经验,帮你总结这帮双面HR们
    关于NaN的一些总结
    【Jmeter】提取和引用Token
    拧紧数据“安全阀”,筑牢个保“安全堤”
    55欧式空间02——正交矩阵、欧氏空间的同构
    移动的迷宫
    HAproxy:负载均衡
  • 原文地址:https://blog.csdn.net/XikYu/article/details/132761255