首页 > 其他分享 >Mybatis中 collection 和 association 标签 的区别

Mybatis中 collection 和 association 标签 的区别

时间:2023-11-03 15:33:17浏览次数:34  
标签:查询 映射 对象 collection 关联 Mybatis grxx association 属性


版权声明:本文为CSDN博主「时夏゛」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/XikYu/article/details/132761255

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

目标对象类型:

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

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

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

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

标签:查询,映射,对象,collection,关联,Mybatis,grxx,association,属性
From: https://www.cnblogs.com/andy1234/p/17807673.html

相关文章

  • Springmvc和mybatis和spring的整合
    一.springmvc工作原理springmvc常用的组件为SpingMVC的常用组件:1)DispatcherServlet是一种前端控制器,由框架提供。作用:统一处理请求和响应。除此之外还是整个流程控制的中心,由DispatcherServlet来调用其他组件,处理用户的请求2)HandlerMapping处理器映射器,由框架提供。作用:......
  • 2.第一个MyBatis程序 搭建环境->导入MyBatis->编写代码->测试
    2.1搭建环境搭建数据库-创建表CREATETABLE`user`(`id`int(20)NOTNULL,`name`varchar(30)DEFAULTNULL,`pwd`varchar(30)DEFAULTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBDEFAULTCHARSET=utf8;​​INSERTinto`user`(id,name,pwd)VALUES(1,'张......
  • mybatis-plus的in,是传Array还是传List?仔细一看方法签名,瞬间秒懂
    springboot项目通常配合mybatisplus来做数据CRUD。我们在查询或更新数据的时候,有时要用到in来过滤数据。比如SELECT*FROMemax_scbg_orderWHEREorder_noIN(1305679009380433922,1305405259472830465)mybatisplus中关于in方法的使用,在传多个字段值的时候,我们经常搞不清是传Arr......
  • javaweb--MyBatis
    持久层框架,用于简化JDBC开发负责将数据保存到数据库的那一层代码JavaEE三层架构:表现层、业务层、持久层免除了几乎所有JDBC代码及设置参数和获取结果集的工作。1、导入查询user表中所有的数据createDATABASEmybatis;usemybatis;droptableifexiststb_user;createtable......
  • springboot web使用mybatis访问mysql库
    思想:重点:springboot项目可以配置mybatis必须的内容。默认配置文件为“main/resources/application.properties”(yml为其另一种写法,感兴趣自己去查)一切编码跟普通的mybatis相同。注意:xml文件最好放在资源文件夹resources下面,以便编译时直接复制。由此引起需要在springboot......
  • java mysql druid mybatis-plus里使用多表删除出错的一种处理方式
    今天在出来多表删除的时候在mapper.xml用了下面的多个delete语句<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEmapperPUBLIC"-//mybatis.org//DTDMapper3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernamespa......
  • mybatis plus很好,但是我被它坑了!
    作者今天在开发一个后台发送消息的功能时,由于需要给多个用户发送消息,于是使用了 mybatisplus 提供的 saveBatch() 方法,在测试环境测试通过上预发布后,测试反应发送消息接口很慢得等5、6秒,于是我就登录预发布环境查看执行日志,发现是 mybatisplus 提供的 saveBatch() 方......
  • Collections
     ArrayList相关Collections.synchronizedList(newArrayList<>())publicclassArrayList<E>extendsAbstractList<E>implementsList<E>,RandomAccess,Cloneable,java.io.Serializable{}publicclassCollections{......
  • 02Collection的遍历方式
    Collection的遍历方式遍历器遍历增强for循环遍历Lambda表达式遍历普通for只有List系列的才能用,Set用不了一、迭代器遍历iteratorn.迭代器,迭代程序。迭代器不依赖索引。迭代器遍历就是把元素一个一个的获取出来二、迭代器的Iterator类,和它的常用方法迭代器......
  • 03Collection的遍历方式二
    二、增强for遍历增强for的底层就是迭代器,为了简化迭代器的代码书写的。它是JDK5之后出现的,其内部原理就是一个Iterator迭代器所有的单列表集合和数组才能用增强for进行遍历格式:for(元素的数据类型变量名:数组或者集合){}for(Strings:list){System......