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

MyBatis 关联映射深度解析:_association_ 与 _collection_ 实战教程


一、核心概念与适用场景

在 MyBatis 中,<association><collection> 用于处理对象间的关联关系,简化复杂查询到对象结构的映射。

标签用途对应关系示例场景
<association>映射 单个嵌套对象(“有一个”关系)一对一、多对一员工 (Emp) 属于一个部门 (Dept)
<collection>映射 集合属性(“有多个”关系)一对多、多对多用户 (User) 拥有多个角色 (Role)

二、标签属性详解
1. <association> 属性
属性名必填说明
propertyPOJO 中的属性名(如 Emp.dept)。
javaType关联对象的完整类名(如 cn.cjxy.domain.Dept),通常 MyBatis 可自动推断。
resultMap引用外部已定义的 ResultMap,适合复用映射规则。
column当前查询中作为关联子查询参数的列名(格式 {prop=col1, prop2=col2}),适用于嵌套查询方式。
select指向另一个 <select> 的 ID,用于延迟加载关联对象(需配置懒加载)。
2. <collection> 属性
属性名必填说明
propertyPOJO 中的集合属性名(如 User.roles)。
ofType集合元素的完整类名(如 cn.cjxy.domain.Role)。
resultMap引用外部 ResultMap。
column传递到嵌套查询的参数列,类似 <association>
select执行嵌套查询的 <select> ID。

三、实战对比:用户代码解析与优化
**1. 代码1 (UserMapper.xml):多角色查询(一对多)
<resultMap id="userResultMap" type="User"><id column="id" property="id"/><result column="username" property="username"/><!-- ...其他字段映射 --><!-- 错误:角色ID列名冲突 --><collection property="roles" ofType="Role"><result column="id" property="roleId"/> <!-- 此处colum
http://www.xdnf.cn/news/567325.html

相关文章:

  • k8s-ServiceAccount 配置
  • spring5-配外部文件-spEL-工厂bean-FactoryBean
  • 【疑难杂症】Mysql 无报错 修改配置文件后服务启动不起来 已解决|设置远程连接
  • Redis SETNX:分布式锁与原子性操作的核心
  • Docker run命令-p参数详解
  • Python打卡训练营day28-类的定义与方法
  • 2021-04-12 VSC++: 寻找N以内的亲密数对。(求因子和)
  • 【Node.js】Web开发框架
  • 牛客网NC15869:长方体边长和计算问题解析
  • Python中的常量和变量分别是怎么定义的?
  • 【QT】在界面A打开界面B时,界面A隐藏,界面B关闭时,界面A复现
  • chromedp -—— 基于 go 的自动化操作浏览器库
  • Redis 的 key 的过期策略是怎么实现的
  • Redis String 设计思想深度解析
  • 系统架构设计师案例分析题——数据库缓存篇
  • 解除diffusers库的prompt长度限制(SDXL版)
  • ArcGIS Pro 3.4 二次开发 - 核心主机
  • Linux yq 命令使用详解
  • 【Qt】QImage实战
  • 一文读懂迁移学习:从理论到实践
  • Git Clone 原理详解:为什么它比本地文件复制更快? -优雅草卓伊凡
  • word格式相关问题
  • C语言——函数递归与迭代
  • 微调后的模型保存与加载
  • Android13 wifi设置国家码详解
  • 结课作业01. 用户空间 MPU6050 体感鼠标驱动程序
  • SuperVINS:应对挑战性成像条件的实时视觉-惯性SLAM框架【全流程配置与测试!!!】【2025最新版!!!!】
  • flink 提交流程
  • 基于Flink的数据中台管理平台
  • CNN手写数字识别/全套源码+注释可直接运行