Mybatisd 的高级结果映射

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

猜你喜欢

转载自blog.csdn.net/weixin_41653442/article/details/81778589