框架学习系列 mybatis 第十七篇 高级结果映射一

1:数据模型分析

2:resultType的使用

3:总结&下节预告

本文是《凯哥陪你学系列-框架学习之mybatis框架学习》中第十七篇 高级结果映射一

声明:本文系凯哥Java(www.kaigejava.com)原创,未经允许,禁止转载!

在说结果映射之前,我们先来分析分析数据模型。

在了解了数据模型的情况下(业务下),才能知道具体需要返回什么。

那么,接下来,咱们开始学习

一:数据模型分析

实际业务:电商项目中订单业务

四个表:订单表(orders)、订单明细表(orderdetail)、商品表(items)、用户表(user)

商品表(items)字段:

框架学习系列 mybatis 第十七篇 高级结果映射一

框架学习系列 mybatis 第十七篇 高级结果映射一

订单明细表(orderdetail)字段:

框架学习系列 mybatis 第十七篇 高级结果映射一

框架学习系列 mybatis 第十七篇 高级结果映射一

订单表(orders)字段:

框架学习系列 mybatis 第十七篇 高级结果映射一

框架学习系列 mybatis 第十七篇 高级结果映射一

用户表(user):

框架学习系列 mybatis 第十七篇 高级结果映射一

框架学习系列 mybatis 第十七篇 高级结果映射一

需要分析数据模型:

1:明确每张表存储的信息

知道四张表具体是干嘛的,为什么需要这四张表

2:明确每张表中关键字段(主键、外建、非空等)

3:明确数据库中表与表之间的外建关系

4:明确业务中表语表直接的关系(建立在具体的业务上)

具体的表之间关系如下图

框架学习系列 mybatis 第十七篇 高级结果映射一

框架学习系列 mybatis 第十七篇 高级结果映射一

二:resultType的使用

2.1:一对一映射

需求:在查询订单信息的时候,同时关联查询出用户信息。

从上图中我们可以知道对应的表:

主表:order 从表:user

对应的sql语句:

SELECT

orders.`id`,

orders.`user_id`,

orders.`number`,

user.`username`,

user.`sex`

FROM

orders,

USER

WHERE orders.`user_id` = user.`id`

使用resultType返回:

2.2:创建扩展类:

2.2.1:为什么要创建扩展了?需求是查询订单信息的时候,关联查询出用户信息啊

我们知道的:

订单信息和用户信息不在同一张表内。而我们主要查询的是订单的全部信息和用户表中用户名、性别这两个字段。

所以我们可以创建一个继承了订单表的类,同时这个类中又有用户名和性别这两个字段。

这样,我们的sql查询完成的数据就可以直接返回这个扩展类中。

扩展类:OrderExt

框架学习系列 mybatis 第十七篇 高级结果映射一

框架学习系列 mybatis 第十七篇 高级结果映射一

2.3:对应的mapper映射文件

框架学习系列 mybatis 第十七篇 高级结果映射一

框架学习系列 mybatis 第十七篇 高级结果映射一

测试代码:

框架学习系列 mybatis 第十七篇 高级结果映射一

框架学习系列 mybatis 第十七篇 高级结果映射一

三:总结

总结:

使用resultType来进行一对一结果映射,查询出的列的个数和映射的属性的个数要一致。而且映射的属性要存在与一个大的对象中,它是一种平铺式的映射,即数据库查询出多少条记录,则映射成多少个对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值