当前位置: 首页 > news >正文

mybatis中collection标签与association标签的区别与应用场景

应用场景: association的应用在 一对一 多对一 的关系中,例如在员工-部门关系中 进行多对一查询时, 在部门的resultMap中

点击查看代码
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Employee {/*雇员的编号,由四位数字所组成*/private Long empno;/*雇员的姓名,由10位字符所组成*/private String ename;/*雇员的职位*/private String job;/*雇员对应的领导编号,领导也是雇员*/private Long mgr;/*雇员的雇佣日期*/private Date hiredate;/*基本工资,其中有两位小数,五位整数,一共是七位*/private Double sal;/*奖金,佣金(销售才有)*/private Double comm;/*雇员所在的部门编号*/private Long deptno;/*雇员对应的部门*/private Dept dept;}
需要查询雇员对应的部门并进行映射时,则可以使用association标签. 而collection标签 适用于 一对多 多对多的场景,例如在部门类中,
点击查看代码
  @Data
@AllArgsConstructor
@NoArgsConstructor
public class Dept {/* 表示部门编号,由两位数字所组成 */private Long deptNo;/* 部门名称,最多由14个字符所组成 */private String dname;/* 部门所在的位置 */private String loc;private List<Employee> empList;
}
想查询每个部门下的所有员工信息,则可以使用collection标签 区别:

1. association里面用的是javaType,来指定这个对象的类型,而collection用的是ofType来指定这个集合对象的类型

2. association用来封装一个对象,collection用于封装一个包含若干对象的集合

3. 若使用association,则在实体类中使用的是一个关联对象,使用collection,则在实体类中需封装一个集合

4. association的javaType可以省略,mybatis容器会自动帮忙找到,而collection必须使用ofType 指定集合中的元素类型

相同点:

1. 二者都只能作为<resultMap>的子标签使用,不能和resultType混用

2. 拥有很多共同的属性: property 关联属性的名称 column 主表的关联字段名,用于子查询 select 用于子查询,调用其他mapper.xml的方法,resultMap 手动映射

3.都支持联合查询和子查询,详情可见 上一篇

4. 都支持懒加载

子查询方式:
Snipaste_2026-01-28_22-38-56
Snipaste_2026-01-28_22-39-43
Snipaste_2026-01-28_22-40-14

连接查询方式:
Snipaste_2026-01-28_22-45-03
Snipaste_2026-01-28_22-45-27

http://www.jsqmd.com/news/314307/

相关文章:

  • 搭配单通道高延迟内存照样是最强游戏处理器!锐龙7 9850X3D首发评测
  • 2025年CRM系统选型手册:主流厂商能力横向对比及深度解析
  • SpringMVC
  • Naabu 使用手册
  • 声振温监测技术:设备故障的“隐形哨兵”,预警的核心底气
  • 设计行业资讯精准推送工具,输入关注行业关键词,自动筛选优质资讯,过滤冗余信息,按每日/每周推送,帮职场人及时掌握行业动态。
  • 2026必备!9个AI论文写作软件,MBA论文写作神器推荐!
  • AI 赋能大模型的下一个“风口”在哪?
  • 多模态大模型中Attention机制暗藏「骗局」,需用一个公式修正丨上大×南开
  • Python RPA从零到实战:一份为期100天的系统培训大纲
  • 2026年CTO最想招的不是程序员,而是“懂业务的测试者”
  • 2026年最值钱的软技能TOP3:软件测试从业者的转型指南
  • 安卓手机/平板/TV版 Rotation强制横屏显示设备!免ROOT可用!再推荐突破手机限制的3款神器
  • 1-28午夜盘思
  • 使用 JYPPX.DeploySharp 高效部署 PaddleOCR,解锁多种高性能 OCR 文字识别方案
  • memset和memcpy的区别
  • 如何把post train做好,后训练方法论
  • LLM已死?Agentic Reasoning:重塑LLM智能体思维
  • 云拒科技推出Yunjue Agent:能够从零开始自我进化的助手系统
  • 基于Java+SSM的智能停车场管理系统:集成车牌识别(SVM)与数据可视化(可用作毕设参考)
  • Flutter艺术探索-Flutter依赖注入:get_it与provider组合使用
  • 设计客户需求整理工具,录入客户沟通内容,自动提取核心需求,异议点及诉点,生成需求清单,标注优先级,帮销售/运营精准对接客户需求。
  • Flutter艺术探索-设计模式在Flutter中的应用:单例、工厂、观察者
  • 大数据时代 RabbitMQ 对数据安全的防护
  • 基于SpringBoot的私房菜定制上门服务系统毕设源码
  • 科视Christie在ISE 2026诠释热忱与机遇的交融魅力
  • 基于SpringBoot的疫情物资捐赠和分配系统毕业设计
  • 【2-64G云服务器盘点】持续更新,汇总大厂云服务器对比选择
  • 基于SpringBoot的社区医院管理系统毕设源码
  • 【解决方案】化被动为主动:在线监测筑起风电场安全防线