2.映射关系(1-1 1-n n-n)

简介: MyBatis中通过resultMap实现关联映射:一对一使用基本映射或resultMap解决字段不一致;一对多在“一”方配置`<collection>`,如用户关联多个角色;多对一通过`<association>`实现,如博客关联作者;多对多借助中间类,双方均用`<collection>`维护关系,如用户与部门的双向关联。

1 一对一
定义一个一对一的Result,进行属性-字段之间的一对一关联映射即可,如果属性和字段是一致的,resultType实际也是可以的,resultMap更多是解决字段-属性不一致(满足驼峰命名就是一致),如id(属性)-USER_ID(字段)
2 一对多
设:一个用户对应多个角色
User类中添加List
一的mapper.xml中,resultMap添加标签.
如:
会得到类似这样的数据
JSON
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
"id": "1003",
"username": "小波",
"password": "123456",
"address": "北京市东城区",
"email": "510273027@qq.com",
"roles": [
{
"id": "1",
"name": "开发"
},
{
"id": "2",
"name": "TL"
}
]
}
3 多对一
设:一个作者可以有多个博客
Author类中添加Blog
一的mapper.xml中添加
如:
XML
复制代码
1
2
3
4
5
6
7
8
9
10









或:
XML
复制代码
1
2
3
4
5
6
7
8
9
10











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

相关文章
|
9月前
|
消息中间件 Shell Linux
RabbitMQ部署指南
本文介绍RabbitMQ在CentOS7下基于Docker的单机与集群部署方案,涵盖镜像安装、DelayExchange插件配置、普通模式与镜像模式集群搭建,并详解仲裁队列使用及集群扩容方法,助力实现高可用消息队列服务。
|
9月前
|
负载均衡 Java Nacos
Gateway服务网关
网关是微服务的统一入口,实现请求路由、权限控制与限流。基于Spring Cloud Gateway可快速搭建高性能网关,支持断言与过滤器灵活配置,并解决跨域问题,提升系统安全性和可维护性。
|
9月前
|
关系型数据库 应用服务中间件 Nacos
Nacos配置中心
本章详解Nacos配置中心实战:实现微服务配置统一管理,支持热更新、配置共享与优先级控制,并搭建高可用集群,提升系统稳定性。
|
9月前
|
JSON Java 数据格式
SpringBoot使用汇总
本课程系统讲解Spring Boot核心知识,涵盖环境搭建、JSON数据处理、日志记录、属性配置、MVC支持、异常处理等,结合实战案例与源码解析,助力开发者快速掌握微服务开发技能。
|
9月前
|
SQL 容灾 Nacos
Seata的部署和集成
本文介绍Seata分布式事务框架的部署与微服务集成。首先下载并解压Seata Server,修改配置文件application.yml,并在Nacos中配置seataServer.properties及数据库信息。创建seata数据库并运行SQL脚本初始化事务表。启动TC服务后,注册至Nacos。各微服务引入Seata依赖,配置application.yml连接TC。为实现高可用,搭建多节点TC集群,通过Nacos统一管理事务组映射,实现异地容灾与动态切换。微服务从Nacos读取client.properties,灵活绑定TC集群,提升系统稳定性与可维护性。(238字)
|
9月前
|
SQL Java 数据库连接
持久层框架MyBatisPlus
MyBatisPlus是MyBatis的增强框架,简化单表CRUD操作,内置分页、条件构造器、代码生成等功能,支持逻辑删除、枚举处理与JSON字段映射,提升开发效率。
|
9月前
|
消息中间件 存储 Java
消息中间件RabbitMQ(高级)
本节深入探讨RabbitMQ在生产环境中的高可用与可靠性问题,涵盖消息确认、持久化、消费者重试、死信队列、延迟消息、惰性队列及集群搭建。通过实战案例实现消息不丢失、延迟处理与高并发支撑,全面提升系统稳定性与可扩展性。(239字)
|
9月前
|
JSON Java API
用 Swagger2 让 Spring Boot 接口“自己说话”
Swagger2助力Spring Boot项目实现API自动化文档,通过注解自动生成接口说明与测试页面,提升前后端协作效率,支持在线调试、参数描述、示例响应,告别手动维护文档与Postman频繁切换。
|
9月前
|
敏捷开发 Java 测试技术
为什么要单元测试
本文探讨单元测试如何让软件开发“提速”而非“踩刹车”。从测试体系演进出发,解析为何谷歌、微软等企业推崇“测试金字塔”,强调单元测试作为地基的重要性。它能提升调试效率、代码质量与研发信心,助力持续交付。忽视单测将积累技术债务,陷入维护困境。写好单测,是迈向高效、可演进系统的必由之路。
|
9月前
|
监控 算法 Unix
Thread.sleep(0) 到底有什么用(读完就懂)
Thread.Sleep(0)并非无用,它会触发操作系统立即重新进行CPU竞争,让其他线程获得执行机会,避免界面假死。而Sleep(1000)也不保证精确唤醒,因线程调度受优先级和系统负载影响。理解其原理有助于编写更高效的多线程程序。