Mybatis映射关系(1-1 1-n n-n)

简介: 本文介绍了MyBatis中四种核心映射关系:一对一、一对多、多对一和多对多。通过resultMap实现属性与字段的映射,解决命名不一致问题;利用association处理多对一,collection处理一对多及多对多关联,结合实例展示JSON与XML配置方式,帮助理解复杂对象关系的持久化映射。

1 一对一
定义一个一对一的Result,进行属性-字段之间的一对一关联映射即可,如果属性和字段是一致的,resultType实际也是可以的,resultMap更多是解决字段-属性不一致(满足驼峰命名就是一致),如id(属性)-USER_ID(字段)

2 一对多
设:一个用户对应多个角色
User类中添加List<Role>
一的mapper.xml中,resultMap添加<collection>标签.
如:
会得到类似这样的数据


{

"id": "1003",

"username": "小波",

"password": "123456",

"address": "北京市东城区",

"email": "510273027@qq.com",

"roles": [

{

"id": "1",

"name": "开发"

},

{

"id": "2",

"name": "TL"

}

]

}

3 多对一
设:一个作者可以有多个博客
Author类中添加Blog
一的mapper.xml中添加<association>
如:


<resultMap id="blogResult" type="Blog">

<id property="id" column="blog_id" />

<result property="title" column="blog_title"/>

<association property="author" column="blog_author_id" javaType="Author" resultMap="authorResult"/>

</resultMap>


<resultMap id="authorResult" type="Author">

<id property="id" column="author_id"/>

<result property="username" column="author_username"/>

</resultMap>

或:


<resultMap id="productBean" type="Blog">

<id property="id" column="blog_id" />

<result property="title" column="blog_title"/>

<!-- 多对一 -->

<!-- property: 指的是属性名称, javaType:指的是属性的类型 -->

<association property="category" javaType="Author">

<id column="cid" property="author_id"/>

<result column="username" property="username"/>

</association>

</resultMap>

4 多对多
设:多个部门对应多个用户
定义一个第三方类,假设为UserForDept.java,属性private User user; private Dept dept;
User类中添加Set<Dept>(针对不同场合这里也可以List),mapper.xml中添加<collection>添加UsersForDept
Dept类中添加Set<User>(针对不同场合这里也可以List),mapper.xml中添加<collection>添加UsersForDept


相关文章
|
API 数据处理 数据安全/隐私保护
curl基础用法
curl基础用法
|
3月前
|
人工智能 运维 机器人
2026年零基础部署OpenClaw(Clawdbot)集成QQ、微信、钉钉、飞书喂饭级教程
2026年,AI自动化代理已经成为个人办公、团队协作的标配工具。OpenClaw(曾用名Clawdbot、Moltbot)凭借轻量化、插件化、全平台兼容的特性,成为国内最受欢迎的开源AI助手框架。它可以通过自然语言完成信息查询、文案生成、代码编写、定时任务、文件处理等一系列自动化操作,真正实现“一句话交给AI,剩下的交给工具”。
2652 3
|
5月前
|
存储 人工智能 图形学
阿里云无影 GPU 云电脑(NVIDIA RTX 5880 显卡)收费价格表:月付与年付费用详解
阿里云无影 GPU 云电脑凭借搭载的 NVIDIA RTX 5880 专业显卡,成为高性能计算场景的热门选择 —— 无论是 3D 建模、工业设计这类图形密集型任务,还是 AI 推理、机器人仿真等计算需求,都能依靠其强劲的硬件配置高效完成。对有这类需求的用户来说,最关心的就是不同配置的具体收费标准,尤其是月付和年付的费用差异,以及如何根据自身场景选择性价比最高的方案。本文结合最新的价格信息和配置细节,用通俗的语言拆解各规格的收费情况,同时补充适用场景和计费方式说明,帮大家清晰掌握成本构成与选型逻辑。
|
SQL Java 数据库连接
MyBatis动态SQL字符串空值判断,这个细节99%的程序员都踩过坑!
本文深入探讨了MyBatis动态SQL中字符串参数判空的常见问题。通过具体案例分析,对比了`name != null and name != &#39;&#39;`与`name != null and name != &#39; &#39;`两种写法的差异,指出后者可能引发逻辑混乱。为避免此类问题,建议在后端对参数进行预处理(如trim去空格),简化MyBatis判断逻辑,提升代码健壮性与可维护性。细节决定成败,严谨处理参数判空是写出高质量代码的关键。
1640 0
|
JSON JavaScript 前端开发
如何检查 JavaScript 对象是否为空
【8月更文挑战第18天】
1678 5
如何检查 JavaScript 对象是否为空
|
人工智能 IDE 开发工具
给IntelliJ IDEA添加AI功能
这篇文章讲解了如何在IntelliJ IDEA中安装和使用阿里云开发的通义灵码插件,以增强IDE的人工智能辅助编程功能。
9864 0
给IntelliJ IDEA添加AI功能
|
云安全 安全 网络安全
云端防御战线:云计算时代的网络安全策略
随着云计算技术的蓬勃发展,网络安全问题也日益凸显。本文将探讨在云服务广泛应用的背景下,如何构建有效的网络安全防护体系,包括对云服务安全模型的解析、网络安全挑战的应对以及信息安全管理的优化措施。我们将通过实例和数据分析,揭示当前云安全领域的主要趋势,并提供针对性的策略建议。
202 26
|
机器学习/深度学习 测试技术 计算机视觉
NeurIPS 2024:FaceChain团队新作,开源拓扑对齐人脸表征模型TopoFR
在2024年NeurIPS会议上,FaceChain团队推出TopoFR模型,通过利用数据的拓扑结构信息,显著提升了人脸识别的准确性。TopoFR采用PTSA策略和SDE策略,分别增强了模型的泛化能力和对硬样本的处理效果。实验结果显示,TopoFR在多个基准测试中表现优异,特别是在IJB-C和IJB-B等高难度测试中,显著超越了现有方法。
600 5
|
运维 安全 网络安全
Web安全-企业网络架构
Web安全-企业网络架构
676 1
|
人工智能 架构师 搜索推荐
AI Agent【项目实战】:MetaGPT遇上元编程,重塑复杂多智能体协作的边界
【7月更文挑战第4天】AI Agent【项目实战】:MetaGPT遇上元编程,重塑复杂多智能体协作的边界
AI Agent【项目实战】:MetaGPT遇上元编程,重塑复杂多智能体协作的边界