MyBatis映射关系

简介: 本文介绍MyBatis中四种映射关系:一对一(resultMap处理字段与属性映射)、一对多(使用`<collection>`标签关联集合)、多对一(通过`<association>`建立关联)及多对多(借助中间类实现双向集合映射),适用于复杂对象关系的数据持久化处理。

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

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

会得到类似这样的数据

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中添加<association>如:

XML

复制代码

1

2

3

4

5

6

7

8

9

10

<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>

或:

XML

复制代码

1

2

3

4

5

6

7

8

9

10

<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>添加UsersForDeptDept类中添加Set<User>(针对不同场合这里也可以List),mapper.xml中添加<collection>添加UsersForDept

相关文章
|
SQL druid Java
springboot +logback+阿里数据源(druid)打印sql日志以及简化日志输出方式
springboot +logback+阿里数据源(druid)打印sql日志以及简化日志输出方式
3624 0
|
SQL Java 数据库连接
Mybatis中强大的resultMap
Mybatis中强大的resultMap
595 0
|
NoSQL Java Redis
Java中使用RedisTemplate根据前缀获取key列表
我们在使用 Redis 的时候,会需要获取以某个字符串开头的所有 key
1588 0
|
6月前
|
开发工具 git
【踩坑】IDEA使用Git push代码时,涵盖了.idea与target
项目中已配置.gitignore但push时仍上传.idea和target文件,问题根源在于.idea目录下存在独立的.gitignore文件且内容不同。只需将根目录的忽略规则同步到该文件中即可解决。
267 1
|
10月前
|
数据可视化 搜索推荐 大数据
基于python大数据的北京旅游可视化及分析系统
本文深入探讨智慧旅游系统的背景、意义及研究现状,分析其在旅游业中的作用与发展潜力,介绍平台架构、技术创新、数据挖掘与服务优化等核心内容,并展示系统实现界面。
|
12月前
|
JSON API 开发者
Django集成Swagger全指南:两种实用方案详解
本文介绍了在 Django 项目中集成 Swagger 的两种主流方案 —— drf-yasg 和 drf-spectacular,涵盖安装配置、效果展示及高级用法,助力开发者高效构建交互式 API 文档系统,提升前后端协作效率。
484 5
|
10月前
|
人工智能 运维 中间件
CTI中间件:现代呼叫中心的核心开发平台
乐科CTI中间件助力企业高效构建智能呼叫中心,集成通信与业务系统,支持多协议、AI融合、高可用部署,广泛应用于客服、营销等场景,降低开发成本,提升运维效率。
|
Java 数据库连接 mybatis
Springboot整合Mybatis,MybatisPlus源码分析,自动装配实现包扫描源码
该文档详细介绍了如何在Springboot Web项目中整合Mybatis,包括添加依赖、使用`@MapperScan`注解配置包扫描路径等步骤。若未使用`@MapperScan`,系统会自动扫描加了`@Mapper`注解的接口;若使用了`@MapperScan`,则按指定路径扫描。文档还深入分析了相关源码,解释了不同情况下的扫描逻辑与优先级,帮助理解Mybatis在Springboot项目中的自动配置机制。
1430 1
Springboot整合Mybatis,MybatisPlus源码分析,自动装配实现包扫描源码
|
人工智能 小程序 数据处理
uni-app开发AI康复锻炼小程序,帮助肢体受伤患者康复!
近期,多家康复机构咨询AI运动识别插件是否适用于肢力运动受限患者的康复锻炼。本文介绍该插件在康复锻炼中的应用场景,包括康复运动指导、运动记录、恢复程度记录及过程监测。插件集成了人体检测、姿态识别等功能,支持微信小程序平台,使用便捷,安全可靠,帮助康复治疗更加高效精准。
|
算法 安全
数据脱敏?看我一行注解搞定!
本文主要分享什么是数据脱敏,如何优雅的在项目中运用一个注解实现数据脱敏,为项目进行赋能。希望能给你们带来帮助。
1714 3

热门文章

最新文章