Mybatis中 collection 和 association 标签 的区别

news2024/11/24 0:11:17

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

  1. 目标对象类型:

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

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

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

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

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

示例:

拓展:

<resultMap id="CommentRecursionMap" type="com.ly.cloud.vo.app.HdplTreeVO">
        <id 	column="pkid" property="pkid"/>
        <result column="xsid" property="xsid"/>
        <result column="xm" property="xm"/>
        <result column="plid" property="plid"/>
        <result column="hfplid" property="hfplid"/>
        <result column="fjid" property="fjid"/>
        <collection property="replyData" select="selectCommentRecursionDataByPlid" column="{plid=pkid}"/>
    </resultMap>
    <!--先查询自主评论的数据,在递归查询回复评论数据-->
    <select id="selectCommentRecursionDataByHdid" resultMap="CommentRecursionMap">
        select
            t.pkid,
          
            t.plid,
        
        from zhxg_gqt_dekt_hdpl t
                 left join zhxg_gqt_dekt_grxx grxx on grxx.yhid = t.xsid
        where t.pllx = '1' and t.hdid = #{hdid}
     
    </select>
    <!--配合selectCommentRecursionDataByHdid使用-->
    <select id="selectCommentRecursionDataByPlid" resultMap="CommentRecursionMap">
        select
            t.pkid,
            t.plid
        from zhxg_gqt_dekt_hdpl t
                 left join zhxg_gqt_dekt_grxx grxx on grxx.yhid = t.xsid
        where nvl(t.hfplid,t.plid) = #{plid}
       
    </select>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/988851.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入了解vue2没有在data中定义的属性非响应式的问题

关于vue2没有在data中定义的属性非响应式的问题 vue2 响应式的原理及实现vue2 解决此类的部分 vue2 响应式的原理及实现 vue2 响应式数据 是通过 es5 中的 Object.defineProperty 方法来实现&#xff0c;把 data 定义的所有属性&#xff0c;转换为 get/set 方法&#xff0c;使…

java应用CPU飙高的排查思路及解决方案

1、使用top命令查看系统cpu占用情况&#xff0c;找出占用最高的进程pid top 2、使用如下命令查找进程内占用cpu最高的线程id ps H -eo pid,tid,%cpu | grep 最高的进程pid查询出进程内2276这个线程占用cpu最高 # pid&#xff08;进程id&#xff09;、tid&#xff08;线程id&…

移动和pc端的微信支付和支付宝支付(持续更新)

最近开发了一个web商城,需要支持pc端,手机端,且需要支持微信支付和支付宝支付。 pc端,pc端用户点击支付,直接用弹窗弹出一个支付二维码即可手机端的支付宝支付,现在自己尝试了下微信内打开一个支付宝支付链接,发现是可以打开,如图: 问了一下,说是工信部反垄断的政策,…

【设计模式】组合模式实现部门树实践

1.前言 几乎在每一个系统的开发过程中&#xff0c;都会遇到一些树状结构的开发需求&#xff0c;例如&#xff1a;组织机构树&#xff0c;部门树&#xff0c;菜单树等。只要是需要开发这种树状结构的需求&#xff0c;我们都可以使用组合模式来完成。 本篇将结合组合模式与Mysq…

激光切割机在船舶行业的的应用有哪些

我国享有世界工厂的美誉&#xff0c;是全球制造业的主力。然而&#xff0c;在船舶制造的关键技术领域&#xff0c;我国的研发投入不足&#xff0c;技术进步仍滞后&#xff0c;我国高端船舶制造的实力仍显不足。 在我国制造业全面复苏的当前背景下&#xff0c;“精准制作”正构成…

苹果上架app备案流程介绍

摘要&#xff1a;本文将为iOS技术博主介绍苹果上架App备案流程的详细步骤&#xff0c;包括注册开发者账号、创建App ID、创建证书、创建Provisioning Profile、开发应用程序、提交应用程序、审核和上架。了解这一流程对于想要将应用程序上架到App Store供用户下载使用的博主来说…

靶场溯源第二题

关卡描述&#xff1a;1. 网站后台登陆地址是多少&#xff1f;&#xff08;相对路径&#xff09; 首先这种确定的网站访问的都是http或者https协议&#xff0c;搜索http看看。关于http的就这两个信息&#xff0c;然后172.16.60.199出现最多&#xff0c;先过滤这个ip看看 这个很…

FAT32文件系统f_mkfs函数详解

1.f_mkfs参数 参数path&#xff1a;要挂载/卸载的逻辑驱动器号;使用设备根路径表示。 参数opt&#xff1a;系统的格式&#xff0c;如图所示&#xff0c;选择FM_FAT32即可&#xff0c;选择其他的可能无法格式化。 参数au&#xff1a;每簇的字节数&#xff0c;以字节为单位&#…

无涯教程-JavaScript - IMDIV函数

描述 IMDIV函数以x yi或x yj文本格式返回两个复数的商。 $$IMDIV(z1,z2) \frac {(a bi)} {(c in)} \frac {{ac bd)(bc-ad)i} {c ^ 2 d ^ 2 } $$ 语法 IMDIV (inumber1, inumber2)争论 Argument描述Required/OptionalInumber1The complex numerator or dividend.Req…

异步编程 - 11 Spring WebFlux的异步非阻塞处理

文章目录 概述Spring WebFlux概述Reactive编程&Reactor库WebFlux服务器WebFlux的并发模型WebFlux对性能的影响WebFlux的编程模型WebFlux注解式编程模型WebFlux函数式编程模型 WebFlux原理浅尝Reactor Netty概述WebFlux服务器启动流程WebFlux一次服务调用流程 WebFlux的适用…

使用gradle打包springboot项目

这边整理下自己项目使用gradle打jar包的坎坷经历&#xff0c;使用的方式是命令行的方式 首先配置build.gradle跟我一样 plugins {id javaid org.springframework.boot version 3.1.3id io.spring.dependency-management version 1.1.3 }//用于添加Java插件,以及一些内置任务&a…

springboot+redis

1.pom.xml <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency> 2.yml配置 # redis 配置redis:host: 127.0.0.1#超时连接timeout: 1000msjedis:pool:#最大连…

OpenHarmony:如何使用HDF驱动控制LED灯

一、程序简介 该程序是基于OpenHarmony标准系统编写的基础外设类&#xff1a;RGB LED。 目前已在凌蒙派-RK3568开发板跑通。详细资料请参考官网&#xff1a;https://gitee.com/Lockzhiner-Electronics/lockzhiner-rk3568-openharmony/tree/master/samples/b02_hdf_rgb_led。 …

十分钟,了解Kafka的Sender线程

〇、前言 在上两篇文章《连Producer端的主线程模块运行原理都不清楚&#xff0c;就敢说自己精通Kafka》和《一文了解Kafka的消息收集器RecordAccumulate》中&#xff0c;我们介绍了Main Thread和RecordAccumulate的工作原理&#xff0c;那么在本篇文章中&#xff0c;我们继续介…

Python之Xlwings操作excel

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、xlwings简介二、安装与使用1.安装2.使用3.xlwings结构说明 二、xlwings对App常见的操作App基础操作工作簿的基础操作工作表的基础操作工作表其他操作 读取单元格…

Android 自定义View之圆形进度条

很多场景下都用到这种进度条&#xff0c;有的还带动画效果&#xff0c; 今天我也来写一个。 写之前先拆解下它的组成&#xff1a; 底层圆形上层弧形中间文字 那我们要做的就是&#xff1a; 绘制底层圆形&#xff1b;在同位置绘制上层弧形&#xff0c;但颜色不同&#xff…

【0908练习】shell脚本使用expr截取网址

题目&#xff1a; 终端输入网址&#xff0c;如&#xff1a;www.hqyj.com&#xff0c; 要求&#xff1a;截取网址每个部分&#xff0c;并放入数组中&#xff0c;不能使用cut&#xff0c;使用expr解决 #!/bin/bash read -p "请输入一个网址" net lenexpr length $net …

协程 VS 线程,Kotlin技术精讲

协程(coroutines)是一种并发设计模式&#xff0c;您可以在Android 平台上使用它来简化异步执行的代码。协程是在版本 1.3 中添加到 Kotlin 的&#xff0c;它基于来自其他语言的既定概念。 在 Android 上&#xff0c;协程有助于管理长时间运行的任务&#xff0c;如果管理不当&a…

无脑014——linux系统,制作coco(json)格式数据集,使用mmdetection训练自己的数据集

电脑&#xff0c;linux&#xff0c;RTX 3090 cuda 11.2 1.制作coco&#xff08;json&#xff09;格式数据集 这里我们使用的标注软件是&#xff1a;labelimg 选择voc格式进行标注&#xff0c;标注之后使用以下代码&#xff0c;把voc格式转换成coco格式&#xff0c;注意最后的路…

机房运维管理软件不知道用哪个好?

云顷网络还原系统V7.0是一款专业的机房运维管理产品&#xff0c;基于局域网络环境&#xff0c;针对中高端机房中电脑运维管理需求所设计开发的。网络还原系统软件通过全面的规划和设计&#xff0c;遵从机房部署、使用到维护阶段化使用方式&#xff0c;通过极速网络同传/增量对拷…