框架学习系列 mybatis 第十七篇 高级结果映射一
1:数据模型分析
2:resultType的使用
3:总结&下节预告
本文是《凯哥陪你学系列-框架学习之mybatis框架学习》中第十七篇 高级结果映射一
声明:本文系凯哥Java(www.kaigejava.com)原创,未经允许,禁止转载!
在说结果映射之前,我们先来分析分析数据模型。
在了解了数据模型的情况下(业务下),才能知道具体需要返回什么。
那么,接下来,咱们开始学习
一:数据模型分析
实际业务:电商项目中订单业务
四个表:订单表(orders)、订单明细表(orderdetail)、商品表(items)、用户表(user)
商品表(items)字段:
订单明细表(orderdetail)字段:
订单表(orders)字段:
用户表(user):
需要分析数据模型:
1:明确每张表存储的信息
知道四张表具体是干嘛的,为什么需要这四张表
2:明确每张表中关键字段(主键、外建、非空等)
3:明确数据库中表与表之间的外建关系
4:明确业务中表语表直接的关系(建立在具体的业务上)
具体的表之间关系如下图
二: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
2.3:对应的mapper映射文件
测试代码:
三:总结
总结:
使用resultType来进行一对一结果映射,查询出的列的个数和映射的属性的个数要一致。而且映射的属性要存在与一个大的对象中,它是一种平铺式的映射,即数据库查询出多少条记录,则映射成多少个对象。