Mybatisd 的高级结果映射

标签: Mybatis

1高级结果映射

1.1数据模型分析
1、明确每张表存储的信息
2、明确每张表中关键字段(主键、外键、非空)
3、明确数据库中表与表之间的外键关系
4、明确业务中表与表的关系(建立在具体的业务)
这里写图片描述
1.2一对一映射
1.2一对一映射
1.2一对一映射

1.2.1需求
查询订单信息,关联查询用户信息

1.2.2Sql
主信息:orders
从信息:user

SELECT 
  orders.`id`,
  orders.`user_id`,
  orders.`number`,
  user.`username`,
  user.`sex` 
FROM
  orders,
  USER 
WHERE orders.`user_id` = user.`id`

1.2.3resultType

1.2.3.1创建扩展类
这里写图片描述
1.2.3.2映射文件
这里写图片描述
1.2.3.3Mapper接口
这里写图片描述
1.2.3.4测试代码
这里写图片描述
1.2.3.5小结
使用resultType来进行一对一结果映射,查询出的列的个数和映射的属性的个数要一致。而且映射的属性要存在与一个大的对象中,它是一种平铺式的映射,即数据库查询出多少条记录,则映射成多少个对象。
1.2.4resultMap
使用resultMap来进行一对一结果映射,它是将关联对象添加到主信息的对象中,具体说是对象嵌套对象的一种映射方式。
1.2.4.1修改扩展类
这里写图片描述
1.2.4.2映射文件
这里写图片描述
1.2.4.3Mapper接口
这里写图片描述
1.2.4.4测试代码
这里写图片描述
1.2.5小结
在一对一结果映射时,使用resultType更加简单方便,如果有特殊要求(对象嵌套对象)时,需要使用resultMap进行映射,比如:查询订单列表,然后在点击列表中的查看订单明细按钮,这个时候就需要使用resultMap进行结果映射。而resultType更适应于查询明细信息,比如,查询订单明细列表。

1.3一对多映射
1.3一对多映射
1.3一对多映射

1.3.1需求
查询订单信息,关联查询订单明细信息及用户信息

1.3.2Sql
主信息:orders
从信息:orderdetail、user

SELECT 
  orders.`id`,
  orders.`user_id`,
  orders.`number`,
  user.`username`,
  user.`sex`,
  orderdetail.`id` detailId,
  orderdetail.`items_id`,
  orderdetail.`items_num` 
FROM
  orders,
  USER,
  orderdetail 
WHERE orders.`user_id` = user.`id` 
  AND orders.`id` = orderdetail.`orders_id`

1.3.3修改扩展类
这里写图片描述
1.3.4映射文件
这里写图片描述
1.3.5Mapper接口
这里写图片描述
1.3.6测试代码
这里写图片描述

1.4多对多映射
1.4多对多映射
1.4多对多映射
多对多映射是一对多映射的特例

1.4.1需求
查询用户信息,关联查询该用户购买的商品信息

1.4.2Sql
主信息:user
从信息:items、orders、orderdetail

SELECT 
  orders.`id`,
  orders.`user_id`,
  orders.`number`,
  user.`username`,
  user.`sex`,
  orderdetail.`id` detailId,
  orderdetail.`items_id`,
  orderdetail.`items_num`,
  items.`name`,
  items.`price` 
FROM
  orders,
  USER,
  orderdetail,
  items 
WHERE orders.`user_id` = user.`id` 
  AND orders.`id` = orderdetail.`orders_id` 
  AND orderdetail.`items_id` = items.`id`

1.4.3修改po类
在User类中添加List orders;
这里写图片描述
在Orders类中添加List detailList;
这里写图片描述
在Orderdetail中添加Items items;
这里写图片描述
1.4.4Mapper接口
这里写图片描述
1.4.5映射文件
这里写图片描述
这里写图片描述
1.4.6测试代码
这里写图片描述

over~~~

版权声明:本文为weixin_41653442原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_41653442/article/details/81778589

智能推荐

【Mybatis用法】Mybatis 高级结果映射,ResultMap Association,mybatis的一对多,多对一,以及多对对的配置和使用

本文目录 一、背景描述 二、解决方案 方法1 方法2 方法3 一、背景描述 需求:查询任务逾期记录时,把任务相关信息查询出来; 表设计:任务相关信息是一张表(uoa_assignment),任务逾期记录是一张表(uoa_assignment_overdue_log);外键是任务主键(id); JavaBean:class Assignment, class AssignmentOverdueLog...

Mybatis--13Mybatis的高级映射

Mybatis的高级映射 以订单数据模型为例进行分析 一对一映射 一对多映射 多对多映射 ResultMap和ResultType的总结 在多表联合查询操作时,存在一对一、一对多、多对多的关系 以订单数据模型为例进行分析 每张表中的数据内容 每张表的主要字段:外键字段,非空字段 表与表之间的业务关系 数据库表: user(用户表):记录购买商品的用户信息 orders(订单表):记录用户创建的所有...

Mybatis中的高级映射关系实例

一、基本知识 resultMap和resultType区别:有引用类型属性用resultMap association:"< association property=“user” javaType=“User”>" //对一映射 collection:< collection property=“o...

Mybatis高级结果映射 [一对一, 一对多]

在关系型数据库中,经常要处理一对一、一对多的关系。例如在RBAC(Role-Based Access Control 基于角色的权限访问控制)权限系统中一个用户拥有多个角色,一个角色拥有多个权限这样复杂的嵌套关系。Mybatis可以轻松地解决这种复杂的关系。 数据库关系图 sys_user  -- 用户表 sys_role   -- 角色表 sys_user_role...

猜你喜欢

新发的日常小实验——使用IETester测试不同IE版本的浏览器,测试网页JS的兼容性(console未定义兼容测试)

文章目录 一、痛点:IE兼容测试 二、关于IETester 三、IETester下载 四、写个html测试js的console接口 五、测试结果 六、js兼容处理 一、痛点:IE兼容测试 之前使用.Net的Winform桌面应用框架做了一个PC版的迷你浏览器(使用IE内核),方便拉起网页支付。 有用户反馈打开支付页面报了如下的错:“console”未定义 到底是多么老旧的I...

linux下搭建nginx及配置

文章目录 下载nginx 解压nginx资源包 准备编译环境 安装编译 查找安装路径并启动nginx 浏览器访问 下载nginx 下载地址:https://nginx.org/en/download.html 这里用的是nginx-1.16.1版本 解压nginx资源包 准备编译环境 安装编译 查找安装路径并启动nginx 浏览器访问 http://IP...

腾讯云+tipask快速搭建基于laravel的CMS网站

一、购买腾讯云服务器,服务市场->基础环境->选择WordPress平台镜像 二、按照tipask教程安装 tipask官方教程地址https://wenda.tipask.com/article/22 官方教程对新手不太友好,我整理如下: 1.ftp上传文件 云服务器镜像装载完毕后,浏览器访问服务器公网ip,点击获取权限后会下载服务器相关的文件 浏览器访问host url,根据所给的...

ElasticSearch入门教程

什么是ElasticSearch 基于Apache Lucene构建的开源搜索引擎 采用Java编写,提供简单易用的RESTFul API 轻松的横向扩展,可支持BP级的结构化和非结构化的数据处理 可应用场景 海量数据分析引擎 站内搜索引擎 数据仓库 一线公司实际应用场景 英国卫报 - 实时分析公众对文章的回应 维基百科、GitHub-站内实时搜索 百度 - 实时日志监控平台 安装 Windows...

小程序明明已经分包了,为啥没有大小没有变???

为什么要分包 真机预览时出现大于2M,无法预览。 对项目进行规整划分 如何分包 实际操作 先将需要分包的文件拷贝到小程序根目录下 在app.json中配置分包结构(如图) 修改被分包中的引用路径,如图片资源、导航URL 可以设置分包的在哪个页面加载 图中表示在进入login页面进行下载设置的分包,all表示在所有网络下。 失败解决!分包了为啥还是提示大小超过2M 分包的文件内所引用的外部文件也必须...


http://www.vxiaotou.com