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

简介: MyBatis中通过resultMap实现一对一、一对多、多对一及多对多映射。一对一用于属性与字段映射;一对多通过`<collection>`关联主表与子表,如用户对应多个角色;多对一用`<association>`,如博客关联作者;多对多借助中间类实现,如用户与部门通过UserForDept关联,完成复杂数据结构封装。

1 一对一
定义一个一对一的Result,进行属性-字段之间的一对一关联映射即可,如果属性和字段是一致的,resultType实际也是可以的,resultMap更多是解决字段-属性不一致(满足驼峰命名就是一致),如id(属性)-USER_ID(字段)
2 一对多
设:一个用户对应多个角色
● User类中添加List
● 一的mapper.xml中,resultMap添加标签.
如:













会得到类似这样的数据
{
"id": "1003",
"username": "小波",
"password": "123456",
"address": "北京市东城区",
"email": "510273027@qq.com",
"roles": [
{
"id": "1",
"name": "开发"
},
{
"id": "2",
"name": "TL"
}
]
}
3 多对一
设:一个作者可以有多个博客
● Author类中添加Blog
● 一的mapper.xml中添加
如:








或:











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

相关文章
|
25天前
|
存储 人工智能 运维
阿里云 Tair 基于 3FS 工程化落地 KVCache:企业级部署、高可用运维与性能调优实践
阿里云 Tair KVCache 团队联合硬件团队对 3FS 进行深度优化,通过 RDMA 流量均衡、小 I/O 调优及全用户态落盘引擎,提升 4K 随机读 IOPS 150%;增强 GDR 零拷贝、多租户隔离与云原生运维能力,构建高性能、高可用、易管理的 KVCache 存储底座,助力 AI 大模型推理降本增效。
|
1月前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
1727 26
|
13天前
|
SQL 存储 NoSQL
简述关系型与非关系型数据库的区别
关系型数据库基于表结构,支持SQL和事务,易于维护但读写性能差、灵活性不足;非关系型数据库格式灵活、速度快、成本低,适用于高并发场景,但缺乏SQL支持与事务机制,复杂查询较弱。
|
13天前
|
监控 Java 调度
定时任务概述
定时任务是基于时间表达式调度执行的任务,适用于对账、提醒、订单超时等场景。实现方式包括单体架构的轮询、Timer、ScheduledExecutorService、Quartz、SpringTask,以及分布式架构下的TBSchedule、Elastic-Job、XXL-JOB等方案,解决集群重复执行、动态调整、故障转移与监控问题。(238字)
|
13天前
|
消息中间件 安全
为什么会选择使用RabbitMQ
选用RabbitMQ因其功能丰富,支持多种消息模式、延迟与惰性队列,天然集群高可用,性能优异且文档齐全。MQ提升吞吐、隔离故障、削峰填谷,降低耦合,但也增加架构复杂性,依赖Broker稳定性。
|
14天前
|
关系型数据库 应用服务中间件 Nacos
Nacos配置中心
本章介绍Nacos配置中心的实现,涵盖配置管理、热更新、共享配置及优先级规则,并演示Nacos集群搭建与高可用部署,帮助掌握微服务环境下配置统一管理的核心技能。
|
14天前
|
关系型数据库 MySQL Java
SpringCloud工程部署启动
本教程介绍SpringCloud微服务工程搭建与部署,支持完整导入或从零构建。创建user-service与order-service模块,配置数据库及依赖,实现RestTemplate远程调用,解决跨服务数据获取问题,帮助理解微服务拆分与通信机制。(239字)
|
13天前
|
设计模式 缓存 Dubbo
zookeeper连接
本文深入解析Dubbo源码中`getRegistry`远程注册核心流程,结合Zookeeper实现服务发现。通过时序图与继承体系图,剖析设计模式应用及注册中心高可用机制,解答四大高频面试题,涵盖多线程、客户端选型等实战要点,助你由浅入深掌握Dubbo架构精髓。(238字)
|
13天前
|
存储 NoSQL Java
Redis
基于 Redis 实现的 RPC 协议(2.3.0+版本支持),通过注册中心管理服务地址,客户端可透明调用。支持直连 Redis 或自定义接口映射,建议方法名与 Redis 标准操作一致,如 get、set、delete,非标准命名需配置映射关系,使用简便且高效。
|
13天前
|
Dubbo Java 应用服务中间件
Feign远程调用
本章介绍如何使用Feign替代RestTemplate实现更优雅的HTTP跨服务调用。通过引入Feign,解决服务地址硬编码、代码可读性差等问题,结合注册中心实现声明式远程调用。内容涵盖Feign基本使用、自定义配置(日志、编码器等)、连接池优化(如Apache HttpClient),并探讨继承与抽取两种最佳实践方案,提升微服务间通信的可维护性与复用性。